30.6.4. Bottlenecks 확인
VDO 성능에 영향을 미치는 몇 가지 주요 요인과 가장 큰 영향을 미치는 항목을 식별하는 데 사용할 수있는 많은 도구가 있습니다.
상단
또는 ps
와 같은 유틸리티에서 볼 수 있듯이 70 % 이상의 스레드 또는 CPU 사용률은 일반적으로 너무 많은 작업이 한 스레드 또는 하나의 CPU에 집중되고 있음을 의미합니다. 그러나 경우에 따라 VDO 스레드가 CPU에서 실행되도록 예약되었지만 실제로 아무 일도 발생하지 않았습니다. 이 시나리오는 과도한 하드웨어 인터럽트 처리기 처리, 코어 또는 NUMA 노드 간의 메모리 경합 또는 회전 잠금에 대한 경합으로 발생할 수 있습니다.
top
유틸리티를 사용하여 시스템 성능을 검사할 때 Red Hat은 top -H 를 실행하여 모든 프로세스 스레드를 별도로 표시하고 1 f j
키를 입력한 다음 Enter/Return 키를 입력하면 top 명령은 개별 CPU 코어에 로드를 표시하고 각 프로세스 또는 스레드가 마지막으로 실행된 CPU를 식별합니다. 이 정보는 다음 통찰력을 제공할 수 있습니다.
- 코어에
%id
(idle) 및%wa
(waiting-for-I/O) 값이 낮은 경우 일종의 작업에서 계속 사용되고 있습니다. - 코어의
%hi
값이 매우 낮으면 해당 코어는 일반 처리 작업을 수행하며 커널 스케줄러로 부하 분산됩니다. 해당 세트에 코어를 추가하면 NUMA 경합이 발생하지 않는 한 부하를 줄일 수 있습니다. - 코어의
%hi
가 몇 % 이상이고 해당 코어에 하나의 스레드만 할당되고%id
및%wa
가 0이면 코어가 오버 커밋되고 스케줄러가 상황을 처리하지 않습니다. 이 경우 커널 스레드 또는 장치 인터럽트 처리를 별도의 코어에 계속 할당해야 합니다.
perf
유틸리티는 많은 CPU의 성능 카운터를 검사할 수 있습니다. Red Hat은 perf top 하위 명령을 스레드 또는 프로세서가 수행하는 작업을 검사하는 시작점으로 사용할 것을 제안합니다. 예를 들어, bioQ
스레드가 회전 잠금을 획득하려는 많은 사이클을 소비하고 있는 경우 VDO 미만의 장치 드라이버에 너무 많은 경합이 있을 수 있으며, bioQ
스레드의 수를 줄이면 상황을 완화할 수 있습니다. CPU를 많이 사용하는 경우(대개 회전 잠금 또는 다른 위치에서) NUMA 노드 간 경합이 다른 노드에서 실행되는 경우(예: bioQ
스레드와 장치 인터럽트 처리기)도 나타낼 수 있습니다. 프로세서가 이를 지원하는 경우 stalled-cycles-backend
,cache-misses
, node-load-misses
와 같은 카운터가 관심을 가질 수 있습니다.
sar
유틸리티는 여러 시스템 통계에 대한 정기적인 보고서를 제공할 수 있습니다. sar -d 1 명령은 블록 장치 사용률 수준( 진행 중인 I/O 작업이 하나 이상 있음)과 큐 길이(초당 한 번 대기 중인 I/O 요청 수)를 보고합니다. 그러나 모든 블록 장치 드라이버가 이러한 정보를 보고할 수 있는 것은 아니므로 sar
usefulness는 사용 중인 장치 드라이버에 따라 달라질 수 있습니다.