그래서 저는 dirty_background_ratio and dirty_ratio
귀하의 전문적인 도움을 받아 올바른 매개변수를 찾으려고 노력하고 있습니다.
지금은 다음을 사용하고 있습니다.
vm.dirty_background_ratio = 20 vm.dirty_ratio = 60
주요 용도는 토렌트입니다. 즉, 토렌트 클라이언트를 통해 파일을 다운로드한 다음 시드합니다. 동시에 여러 다운로드를 수행할 수 있으므로 RAM 캐시를 사용하고 올바른 값을 고려해야 합니다.
어쩌면 나에게 올바른 값을 제안해 주실 수 있나요?
답변1
당신의 아이디어와 가치 (약 두 배)는 괜찮은 것 같지만 RAM이 정확히 무엇을 의미하는지 설명하지 않았습니다.은닉처. 여기는 좀 더완충기더티 페이지는 수정되지 않은 채 디스크에 기록되기 때문입니다.
동일한 블록 장치에 IO가 많으면 나중에 충돌이 발생합니다. 더티 페이지의 수가 유일한 트리거는 아닙니다.mm/페이지 writeback.c):
/*
* The longest time for which data is allowed to remain dirty
*/
unsigned int dirty_expire_interval = 30 * 100; /* centiseconds */
기본값은 30초입니다. 이것으로 충분할 수 있습니다. 그러나 이는 이 값보다 오래된 더티 페이지가 차단되지 않음을 의미합니다(버퍼링/캐싱의 시간 차원).
동시 IO가 있는 경우 이러한 전역 설정도 여기에 영향을 미칩니다.
최고의 설명더러운 요금그리고더러운 배경 비율같은 파일에서:
/* The following parameters are exported via /proc/sys/vm */
/*
* Start background writeback (via writeback threads) at this percentage
*/
int dirty_background_ratio = 10;
...
/*
* The generator of dirty data starts writeback at this percentage
*/
int vm_dirty_ratio = 20;
같은 것이 다른 측면에서 보인다는 것을 나타냅니다(지금은 더러워지고 나중에 정리됩니다).
더티 페이지를 분석하기 위한 몇 가지 명령은 다음과 같습니다.
]# cp MAINTAINERS MAINTAINERS-2
]# grep dirty /proc/vmstat
nr_dirty 135
nr_dirty_threshold 311361
nr_dirty_background_threshold 155490
임계값은 비율 값(백분율 또는 바이트로 제공됨)을 기준으로 계산됩니다. 8GB = 2M 페이지이므로 각각 10%와 20%입니다.
페이지 유형 도구를 사용하면 이러한 더티 페이지를 더 정확하게 식별할 수 있습니다. 이는 /proc/kpageflags를 읽고 약 200밀리초가 소요됩니다.
]# ./tools/vm/page-types -b dirty -b lru -b ~active,~reclaim,~mmap |cut -c-80
flags page-count MB symbolic-flags long-symbolic-flags
0x0000000000000030 1 0 ____Dl__________________________________
0x0000000000000038 130 0 ___UDl__________________________________
0x0000000000044038 1 0 ___UDl________b___u_____________________
0x000000000000403c 23 0 __RUDl________b_________________________
total 155 0
그냥 앉아서 기다리든(30초) 수동으로든 sync
더티 페이지는 빠르게 사라집니다.
]# sync
]# grep dirty /proc/vmstat
nr_dirty 0
...
"UDl"의 130페이지 전체가 사라졌습니다. "최신이고 더티하며 LRU 목록에 있는" 것입니다.
]# ./tools/vm/page-types -b dirty -b lru -b ~active,~reclaim,~mmap |cut -c-80
flags page-count MB symbolic-flags long-symbolic-flags
0x0000000000044038 1 0 ___UDl________b___u_____________________
0x000000000000403c 23 0 __RUDl________b_________________________
total 24 0
두 줄 사이의 130 + 1 페이지 차이는 정확히 파일 크기입니다.
]# ls --block-size=4096 -s MAINTAINERS
131 MAINTAINERS
이것이 나의 프로 플레이 팁입니다.