파일에 쓸 때 "더티" 메모리가 증가하지 않는 이유는 무엇입니까?

파일에 쓸 때 "더티" 메모리가 증가하지 않는 이유는 무엇입니까?

오늘 저는 "writeback" 메커니즘에 대해 많이 읽었고 실험을 해보고 싶었습니다.

편집: 인터넷에서 다운로드한 파일은 Dirty통계 에 표시됩니다.

댓글을 바탕으로 이것이 사실인지 확인하기 위해 인터넷에서 파일을 다운로드해 보았습니다 dd.

실제로 wget.Dirty/proc/meminfo

Dirty파일이 다운로드되면 크기가 수백 KB에서 5MB로 변경됩니다. 그대로 남아있어최소 10초(때로는 20초 이상) 간격이 5초 미만일 것으로 예상했기 때문에(20초 이상) 여전히 흥미롭습니다 vm.dirty_writeback_centisecs. Writeback(내가 아는 한) 0kB로 유지하세요.

시계를 실행하려면:

Every 1.0s: grep -e Dirty -e Writeback /proc/meminfo                                                                                                                                                                                                                                     ubuntu-18: Tue Apr 20 13:32:31 2021

Dirty:              5044 kB
Writeback:             0 kB
WritebackTmp:          0 kB

다운로드 파일:

root@ubuntu-18:~# wget https://www.stats.govt.nz/assets/Uploads/Annual-enterprise-survey/Annual-enterprise-survey-2019-financial-year-provisional/Download-data/annual-enterprise-survey-2019-financial-year-provisional-csv.csv
...
2021-04-20 13:27:11 (2.03 MB/s) - ‘annual-enterprise-survey-2019-financial-year-provisional-csv.csv’ saved [5134576/5134576]

생성된 파일 - 파일이 실제로 크지 않으면 dd통계에 영향을 주지 않습니다.Dirty

다음을 사용하여 10MB 및 100MB 파일을 생성 했습니다 dd./proc/meminfoDirty

dd if=/dev/zero of=file.txt count=100 bs=1M

# watching /proc/meminfo while before, during, and after `dd` is executed
Every 1.0s: grep -e Dirty -e Writeback /proc/meminfo                                                                                                                                                         ubuntu-18: Tue Apr 20 08:06:35 2021

Dirty:               280 kB
Writeback:             0 kB
WritebackTmp:          0 kB

이 행동에 대한 이유가 있습니까? 내 생각에는 이러한 설정( )에 따라 vm.dirty_writeback_centisecs더티 메모리가 디스크에 다시 기록되기까지 최대 5초가 걸릴 것입니다.

 sysctl -a | grep dirty
vm.dirty_background_bytes = 0
vm.dirty_background_ratio = 10
vm.dirty_bytes = 0
vm.dirty_expire_centisecs = 3000
vm.dirty_ratio = 20
vm.dirty_writeback_centisecs = 500
vm.dirtytime_expire_seconds = 43200

이제 1GB 파일을 생성하려고 하면 Dirty메모리 크기가 증가하는 것을 볼 수 있지만 dd런타임 중에만 그렇습니다. dd작업이 완료되면 즉시 매우 작은 값으로 떨어집니다.

더 작은 파일 크기와 더 큰 파일 크기로 여러 번 시도했습니다.

저는 이 모든 것을 Ubuntu가 설치된 Hetzner Cloud VM 머신에서 실행하고 있습니다.

root@ubuntu-18:~# uname -a
Linux ubuntu-18 5.4.0-40-generic #44-Ubuntu SMP Tue Jun 23 00:01:04 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

root@ubuntu-18:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.2 LTS
Release:        20.04
Codename:       focal

자원

간략하게 확인한 리소스(일부에는 제가 놓쳤거나 이해하지 못한 설명이 있을 수 있음):

관련 정보