it-swarm-ko.tech

Linux에서 하드 디스크로드를 어떻게 모니터링 할 수 있습니까?

리눅스에서 하드 디스크로드를 모니터링하는 좋은 명령 줄 유틸리티가 있습니까? top와 같은 것이지만 디스크 활동 i.s.o를 모니터링합니다. CPU 사용량.

좀 더 구체적으로 말하면, 프로그램에서 실행되는 프로그램의 여러 부분에 대해 여러 번 최적화 한 후 일부 (무거운로드) 서버의 경우 병목 현상은 단순히 디스크의 파일에 로깅하는 것입니다. 그러나 서버가 처리 할 수있는 트래픽 양을 평가하기가 매우 어렵다는 것을 알게되었습니다.

가장 이상적인 도구는 "현재 디스크 대역폭의 35 %를 사용하고 있습니다"라는 문구입니다. 어떤 아이디어?

105
Pieter

iostat 도구를 사용하여이를 잘 측정 할 수 있습니다.

% iostat -dx /dev/sda 5

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.78    11.03    1.19    2.82    72.98   111.07    45.80     0.13   32.78   1.60   0.64

디스크 사용률은 마지막 열에 나열됩니다. 이것은 다음과 같이 정의됩니다

장치에 대한 I/O 요청이 발행 된 CPU 시간의 백분율 (장치의 대역폭 폭 활용). 이 값이 100 %에 가까울 때 장치 포화가 발생합니다.

85
Dave Cheney

iotop 은 각 프로세스에서 얼마나 많은 IO 사용 중인지 확인하는 top 버전입니다. 표준 우분투 리포지토리에 있습니다. ; RHEL 또는 Fedora인지는 모르겠지만 그래야합니다.

enter image description here

Iotop을 지원하지 않는 이전 커널 (예 : CentOS 5.x 또는 RHEL 5.x)의 경우 대신 topio를 사용하십시오 (여기에 설명되어 있음 : ). .html # linux : io 통계는/proc // io를 사용하며 iotop과 비슷한 기능을 제공합니다. 자세한 내용은 링크를 참조하십시오.

82
Tim Howland

주석에서 sastanin이 제안한대로 /sys/block/sda/stat 또는 /proc/diskstats에 제공된 값을 직접 처리 할 수 ​​있습니다. 다른 언급 된 도구를 사용할 수없고 쉽게 설치할 수없는 경우에 유용 할 수 있습니다.

예를 들어 (IIUC) (bash에서) 이와 같은 것은 초당 읽기 수를 제공해야합니다.

OLD=`awk '{print $1}' /sys/block/sda/stat` # First field is number of read I/Os processed
DT=1
for ii in `seq 1 10`
do
    sleep $DT
    NEW=`awk '{print $1}' /sys/block/sda/stat`
    echo $((($NEW-$OLD)/$DT))
    OLD=$NEW
done

https://www.kernel.org/doc/Documentation/iostats.txthttps : // 참조 설명서를 보려면 www.kernel.org/doc/Documentation/block/stat.txt 를 참조하십시오.

14

atop 을 살펴보십시오.이 기능은 iotop/top/iftop의 성능을 한 곳에 모아서 시스템의 중요한 부분을 강조합니다.

8
Yvan

Nmon 도구를 살펴 보는 것이 좋습니다. 또한 나중에 시스템에 파일을 기록하기 위해 여러 시스템 매개 변수에 대한 실시간로드를 보여줍니다. 무료 도구입니다 여기 :

6
MikeyB

총 대역폭이 얼마인지 확인하려면 hdparm -T /dev/sda 버퍼 캐시 (fileio) 성능을 테스트하려면 hdparm -t /dev/sda 장치 읽기 성능을 테스트

예 : 랩탑이 SATA 디스크에서 82MB/초, 캐시에서 2GB/초를 가져옵니다. 내 dekstop은 캐시에서 12GB/초, HW RAID 어레이에서 500MB/초를 가져옵니다. 서버 클래스 하드웨어에서 마지막 숫자가 두 배가 될 수 있습니다.

readahead를 256보다 높게 설정하면 4096이 가장 적합합니다.

for i in 128 256 512 1024 2048 4096 8192 16384 32768  
do  
hdparm --setra $i  
  for j in 1 2 4 8 16 32  
  do  
  time dd if=/dev/sda of=/dev/null bs="$j"k  count=<fixthis> 1GB / blocksize  
  done  
done  

다른 블록 크기와 다른 미리 읽기에서 1GB를 읽는 시간

5
user2987

하드 디스크로드를 표시하기위한 표준 도구는 iostat입니다.

디스크의 대역폭이 얼마인지 모르기 때문에 사용중인 디스크 대역폭의 % age를 알려주지 않습니다. 어쨌든 디스크에는 연속적인 데이터의 대량 전송에 대한 제조업체의 인용 수치 만 있습니다.

4
Alnitak

RRDtool은 원하는 것을해야한다고 생각합니다. here 데몬을 사용하여 시스템 데이터를 덤프 한 다음 원하는대로 처리 할 수 ​​있습니다. 나는 종종 시스템 부하를 측정하기 위해 그래프 등을 생성하는 데 사용했습니다.

3
PixelSmack

htop 프로세스 정보를 확인하는 좋은 도구입니다. 열을 추가하거나 제거 할 수 있으며 그 중 열이 프로세스의 읽기 및 쓰기 속도입니다.

0
inquam