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.

관련 정보