오늘 저는 "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/meminfo
Dirty
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
자원
간략하게 확인한 리소스(일부에는 제가 놓쳤거나 이해하지 못한 설명이 있을 수 있음):
- https://www.thomas-krenn.com/en/wiki/Linux_Page_Cache_Basics
- https://ncona.com/2018/05/linux-page-cache/
- https://www.kernel.org/doc/html/latest/admin-guide/sysctl/vm.html
- 쓰기 저장 캐시("더티")는 dirty_Background_ratio보다 훨씬 작은 것으로 제한되는 것 같습니다. 그 한계는 무엇입니까? 이 한도는 어떻게 계산되나요?
- 동기화 작업의 진행 상황을 볼 수 있나요?
- https://superuser.com/questions/479379/how-long-can-file-system-writes-be-cached-with-ext4