그래서 저는 dirty_background_ratio and dirty_ratio
귀하의 전문적인 도움을 받아 올바른 매개 변수를 찾으려고 노력하고 있습니다.
지금은 다음을 사용하고 있습니다.
vm.dirty_background_ratio = 20 vm.dirty_ratio = 60
주요 용도는 토렌트입니다. 즉, 토렌트 클라이언트를 통해 파일을 다운로드한 다음 시드합니다. 한 번에 많은 다운로드가 가능하므로 올바른 값을 고려하여 RAM 캐싱을 사용해야 합니다.
나에게 올바른 가치를 제안해 주실 수 있을까요?
답변1
귀하의 아이디어와 가치(거의 두 배)는 제가 보기에는 괜찮아 보이지만 RAM이 정확히 무엇을 의미하는지 설명하지 않았습니다.캐싱. 여기서는 단지버퍼링더티 페이지는 모두 수정되지 않은 채 디스크로 향하고 있기 때문입니다.
동일한 블록 장치에 IO가 많으면 조금 후에 충돌할 뿐입니다. 더티 페이지의 양이 유일한 원인은 아니지만 (mm/page-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를 읽고 200ms 정도 걸립니다.
]# ./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
이것이 나의 전문적인 플레이 어라운드 팁입니다.