내 용도에 가장 적합한 dirty_ground_ratio와 dirty_ratio는 무엇입니까?

내 용도에 가장 적합한 dirty_ground_ratio와 dirty_ratio는 무엇입니까?

그래서 저는 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

이것이 나의 전문적인 플레이 어라운드 팁입니다.

관련 정보