
다음은 net-snmp 출력이며, 보시다시피 diskIOLA를 사용할 수 없습니다.
SNMP table: UCD-DISKIO-MIB::diskIOTable
diskIOIndex diskIODevice diskIONRead diskIONWritten diskIOReads diskIOWrites diskIOLA1 diskIOLA5 diskIOLA15 diskIONReadX diskIONWrittenX
25 sda 845276160 2882477056 576632 42597061 ? ? ? 5140243456 883350772736
여기의 정의에 따르면http://www.net-snmp.org/docs/mibs/ucdDiskIOMIB.html:
디스크IOLAxx분 평균 디스크 로드(%)를 의미합니다.
테이블의 다른 값은 다음과 같습니다.
- diskIONRead - 부팅 이후 이 장치에서 읽은 바이트 수입니다.
- diskIONWritten - 부팅 이후 이 장치에 쓴 바이트 수입니다.
- diskIOReads - 부팅 이후 이 장치에서 읽기 액세스 횟수입니다.
- diskIOWrites - 부팅 이후 이 장치에 대한 쓰기 액세스 횟수입니다.
그렇다면 이 로드는 서버에 수집되지 않는데 어떻게 수동으로 계산할 수 있습니까?
결국 우리는 디스크 IO가 무거운지 여부를 알 수 있는 그래프를 사용자에게 보여주고 싶습니다. 읽기/쓰기 바이트/초 또는 읽기/쓰기 요청/초를 사용하여 이를 표시할 수 있습니다.
읽기/쓰기 요청/초만 표시하면 과도한 I/O가 진행되고 있음을 알 수 있습니다. 그러나 디스크 R/W 속도가 이로 인해 영향을 받는지는 알 수 없습니다.
그리고 R/W 속도를 표시하는 것만으로는 속도가 영향을 받는 이유를 알 수 없습니다. I/O 작업이 너무 많기 때문인지 비동기 쓰기를 위한 버퍼 메모리가 부족하기 때문인지도 알 수 없습니다. 따라서 두 가지를 모두 표시해야 합니다.
하지만 디스크 IOLoad의 다른 값은 무엇을 의미하며 어떻게 계산할 수 있으며 snmp에 수집되지 않는 이유는 무엇입니까? 이것을 활성화하면 엄청난 부하가 발생합니까? 이 값을 수집하는 데 과도한 부하가 발생하는 경우 수동으로 계산할 수 있습니다. 그런데 공식이 뭔가요?
답변1
귀하가 가지고 있는 정보는 디스크 사용률(%)을 계산하는 데 충분하지 않습니다. 디스크 사용률(%)은 다음과 같이 계산됩니다 disk_time_spent_in_io / elapsed_time
.
예를 들어, 디스크가 1초 동안 IO를 수행하는 데 0.25초를 소비한다면 디스크 활용률은 25%입니다.
가동률을 보면 작업횟수는 의미가 없습니다. 디스크 및 수행 중인 IO 유형(대량 및 무작위)에 따라 10 IOPS 또는 10000 IOPS에서 100% 활용될 수 있습니다. 알 수 있는 유일한 방법은 디스크가 해당 IOP를 수행하는 데 걸리는 시간입니다.
답변2
솔루션을 검색하는 모든 사람을 위해 iostat는 /sys/block/sda/stat
. 공식은 대략 다음과 같습니다.
{now,past}_tot_ticks = total time this block device has been active (/sys/block/sda/stat)
{now,past}_uptime = uptime in /proc/uptime (first value)
percentage = (now_tot_ticks - past_tot_ticks) / (now_uptime - past_uptime) / 10
1초 동안 IO 로드를 백분율로 가져오는 명령은 다음과 같습니다.
$ cat \
<(cat /sys/block/sda/stat && cat /proc/uptime) \
<(sleep 1 && cat /sys/block/sda/stat && cat /proc/uptime) \
| awk -v RS="" '{printf "%.2f%\n", ($27-$10)/($33-$16) / 10}';
추가 자료:
[1]https://www.kernel.org/doc/Documentation/block/stat.txt
[2]https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/deployment_guide/s2-proc-uptime
[삼]https://github.com/sysstat/sysstat/blob/v11.4.3/iostat.c