IOPS 크기 모니터링

IOPS 크기 모니터링

최신 Linux에서 스토리지 IOPS 크기를 모니터링하는 방법은 무엇입니까?

iostat와 같은 명령을 사용하여 스토리지 IOPS 수를 모니터링할 수 있습니다. 하지만 워크로드로 인해 생성된 iops의 크기를 알고 싶습니다.

예를 들어 마지막 X초에는 5 iops 4K, 10 iops 8K, 20 iops 16K...가 있습니다.

저는 블록 장치 수준(예: /dev/sda)에서 모니터링하는 데 관심이 있지만 다른 수준에서도 흥미로울 것입니다.

답변1

낮은 수준

낮은 수준에서는 /sys/block/X/stat문서화되어 있는 에서 이 정보를 얻을 수 있습니다.여기.

예시 콘텐츠는 다음과 같습니다.

   10465     3250   759844    27528     4400     2983   546848    66306        0     9754    93792

우리가 원하는 필드는 읽기용 열 1과 3, 쓰기용 열 5와 7입니다. 둘 다 계산 방법은 동일하므로 읽기에 대해서만 다루겠습니다.

열 1은 읽기 수(모니터링할 수 있음을 나타냄)이고 열 3은 읽은 섹터 수입니다. 섹터는 512바이트입니다. 따라서 이를 사용하여 읽기 크기를 계산하려면 다음을 수행하면 됩니다 $col3 * 512 / $col1.
이 파일의 숫자는 디스크가 온라인 상태가 된 이후의 합계입니다. 따라서 시간 경과에 따른 평균 읽기 크기를 계산하려면 파일을 두 번 읽고 다음을 사용하여 계산하면 됩니다 ($col3_t2 - $col3_t1) * 512 / ($col1_t2 - $col1_t1).

위의 방법은 애플리케이션 수준에서 실행된 OP의 크기를 제공합니다(정확한 설명은 아니지만 충분히 유사함). 커널은 여러 작업을 함께 결합할 수 있으므로 디스크에서 수행되는 작업이 더 적습니다. 이에 대한 계산은 다음과 같습니다 $col3 * 512 / ($col1 - $col2). 그리고 일정 기간 동안의 가치를 얻으세요.($col3_t2 - $col3_t1) * 512 / (($col1_t2 - $col1_t1) - ($col2_t2 - $col2_t1))

높은 레벨

iostat값을 제공할 수도 있지만 정확도가 떨어집니다. 쓰기, 읽기를 구분하지 않고 섹터 값만 제공하고 바이트 값은 제공하지 않습니다(따라서 다시 512를 곱함). 하지만 명령은 이고 iostat -x -d, 살펴볼 열은 입니다 avgrq-sz.

관련 정보