답변:
iotop과 같은 I / O 모니터를 사용할 수 있지만 현재 I / O 작업이있는 프로세스 또는 스레드 만 표시합니다.
I / O를 기다리는 프로세스를 찾아야하는 경우 watch를 사용하여 아래와 같이 STAT 플래그 'D'가있는 프로세스를 모니터하십시오.
watch -n 1 "(ps aux | awk '\$8 ~ /D/ { print \$0 }')"
iowait
iotop
watch
ps
awk
ps
POSIX 플래그를 사용 awk
하여 다르게 알아 냈을 것입니다 : watch "(ps -eo stat,pid,comm|awk '(NR==1)||(\$1~/D/){print}')"
-이렇게하면 열 머리글과 stat, pid 및 명령을 얻습니다.
ps axu
"D"상태 인 프로세스를 찾으십시오. ps (1) 맨 페이지를 기반으로 D 상태에있는 프로세스는 중단 할 수없는 절전 상태에 있으며 거의 항상 'IO를 기다리는 중'을 의미합니다. 불행히도, 이러한 프로세스를 죽이는 것은 일반적으로 불가능합니다.
Zanchey의 대답은 IO를 기다리는 것이 무엇인지 아는 가장 좋습니다.
서버의 부하가 높다고 말할 때 그 의미는 무엇입니까? 특히 무언가가 느리게 반응합니까?
디스크 IO에 병목 현상이 있는지 궁금하다면 iostat 명령 (sysstat 패키지의 일부)을 사용하여 디스크에 실제로로드가 심한 지 확인하십시오.
예:
[kbrandt@kbrandt-opadmin: ~] iostat -x 1 3
avg-cpu: %user %nice %system %iowait %steal %idle
2.38 34.71 2.64 1.18 0.00 59.21
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.11 17.35 2.21 20.31 46.57 301.40 15.45 2.27 100.66 1.48 3.34
sda1 0.10 17.31 2.21 20.31 46.48 301.10 15.44 2.27 100.66 1.48 3.34
sda2 0.00 0.00 0.00 0.00 0.00 0.00 3.50 0.00 30.00 30.00 0.00
sr0 0.00 0.00 0.00 0.00 0.00 0.00 18.44 0.00 677.67 512.61 0.00
avg-cpu: %user %nice %system %iowait %steal %idle
6.22 0.00 4.31 0.00 0.00 89.47
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sda1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sda2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
블록 읽기 / 쓰기 작업을 수행중인 프로세스의 block_dump 로깅을 활성화하십시오 .
echo 1 > /proc/sys/vm/block_dump
tail -f /var/log/syslog
완료되면 추적을 비활성화하여 로그 파일을 스팸하지 않도록합니다.
echo 0 > /proc/sys/vm/block_dump