"top"을 사용하면 어떤 CPU가 사용 중이고 어떤 프로세스가 내 CPU를 모두 사용하고 있는지 알 수 있습니다.
"iostat -x"를 사용하면 어떤 드라이브가 사용 중인지 알 수 있습니다.
그러나 어떤 프로세스가 모든 드라이브의 처리량을 사용하고 있는지 어떻게 알 수 있습니까?
"top"을 사용하면 어떤 CPU가 사용 중이고 어떤 프로세스가 내 CPU를 모두 사용하고 있는지 알 수 있습니다.
"iostat -x"를 사용하면 어떤 드라이브가 사용 중인지 알 수 있습니다.
그러나 어떤 프로세스가 모든 드라이브의 처리량을 사용하고 있는지 어떻게 알 수 있습니까?
답변:
찾고 있습니다 iotop
(커널> 2.6.20 및 Python 2.5가 있다고 가정). 실패하면 파일 시스템에 연결하는 방법을 찾고 있습니다. 나는 전자를 추천합니다.
iotop
프로세스에서 사용하는 IOPS 수가 아닌 I / O 대역폭을 표시하는 것 같습니다. 이것은 매우 관련이 없습니다. 작은 쓰기 + 동기화를 많이 수행하는 프로세스는 대규모 연속 데이터 일괄 처리를 고속으로 작성하는 프로세스보다 디스크의 IO 용량을 더 많이 사용합니다.
[jdb2/nvme0n1p1]
것은 iotop에 있었지만 / proc / sys / vm / block_dump를 활성화하고 출력을 정상 / 안정 시스템 lxadm.com/Simple_filesystem_read/write_tracing_with_/proc/sys/ 와 비교하여 운 이 좋았 습니다. kubectl 요청을 지속적으로 생성하는 도커 컨테이너로, /home/spinnaker/.kube/cache/discovery/.../serverresources.json
. 사용자 / 프로세스 이름으로 범위를 좁 히면 다음과 같은 iotop -atku systemd-network | grep kubectl
것도 도움이 될 수 있습니다.
현재 실행중인 'D'상태 (디스크 응답 대기 중)의 프로세스를 찾으려면 다음을 수행하십시오.
while true; do date; ps aux | awk '{if($8=="D") print $0;}'; sleep 1; done
또는
watch -n1 -d "ps axu | awk '{if (\$8==\"D\") {print \$0}}'"
Wed Aug 29 13:00:46 CLT 2012
root 321 0.0 0.0 0 0 ? D May28 4:25 \_ [jbd2/dm-0-8]
Wed Aug 29 13:00:47 CLT 2012
Wed Aug 29 13:00:48 CLT 2012
Wed Aug 29 13:00:49 CLT 2012
Wed Aug 29 13:00:50 CLT 2012
root 321 0.0 0.0 0 0 ? D May28 4:25 \_ [jbd2/dm-0-8]
Wed Aug 29 13:00:51 CLT 2012
Wed Aug 29 13:00:52 CLT 2012
Wed Aug 29 13:00:53 CLT 2012
Wed Aug 29 13:00:55 CLT 2012
Wed Aug 29 13:00:56 CLT 2012
root 321 0.0 0.0 0 0 ? D May28 4:25 \_ [jbd2/dm-0-8]
Wed Aug 29 13:00:57 CLT 2012
root 302 0.0 0.0 0 0 ? D May28 3:07 \_ [kdmflush]
root 321 0.0 0.0 0 0 ? D May28 4:25 \_ [jbd2/dm-0-8]
Wed Aug 29 13:00:58 CLT 2012
root 302 0.0 0.0 0 0 ? D May28 3:07 \_ [kdmflush]
root 321 0.0 0.0 0 0 ? D May28 4:25 \_ [jbd2/dm-0-8]
Wed Aug 29 13:00:59 CLT 2012
root 302 0.0 0.0 0 0 ? D May28 3:07 \_ [kdmflush]
root 321 0.0 0.0 0 0 ? D May28 4:25 \_ [jbd2/dm-0-8]
Wed Aug 29 13:01:00 CLT 2012
root 302 0.0 0.0 0 0 ? D May28 3:07 \_ [kdmflush]
root 321 0.0 0.0 0 0 ? D May28 4:25 \_ [jbd2/dm-0-8]
Wed Aug 29 13:01:01 CLT 2012
root 302 0.0 0.0 0 0 ? D May28 3:07 \_ [kdmflush]
root 321 0.0 0.0 0 0 ? D May28 4:25 \_ [jbd2/dm-0-8]
Wed Aug 29 13:01:02 CLT 2012
Wed Aug 29 13:01:03 CLT 2012
root 321 0.0 0.0 0 0 ? D May28 4:25 \_ [jbd2/dm-0-8]
결과에서 알 수 있듯이 jdb2 / dm-0-8 (ext4 저널 프로세스) 및 kdmflush는 지속적으로 Linux를 차단합니다.
자세한 내용은이 URL이 도움이 될 수 있습니다. Linux Wait-IO 문제
atop 도 잘 작동하며 iotop을 실행할 수없는 구형 CentOS 5.x 시스템에서도 쉽게 설치할 수 있습니다. 도움이 필요하면 d
디스크 세부 정보를 표시하려면 누르십시오 ?
.
ATOP - mybox 2014/09/08 15:26:00 ------ 10s elapsed
PRC | sys 0.33s | user 1.08s | | #proc 161 | #zombie 0 | clones 31 | | #exit 16 |
CPU | sys 4% | user 11% | irq 0% | idle 306% | wait 79% | | steal 1% | guest 0% |
cpu | sys 2% | user 8% | irq 0% | idle 11% | cpu000 w 78% | | steal 0% | guest 0% |
cpu | sys 1% | user 1% | irq 0% | idle 98% | cpu001 w 0% | | steal 0% | guest 0% |
cpu | sys 1% | user 1% | irq 0% | idle 99% | cpu003 w 0% | | steal 0% | guest 0% |
cpu | sys 0% | user 1% | irq 0% | idle 99% | cpu002 w 0% | | steal 0% | guest 0% |
CPL | avg1 2.09 | avg5 2.09 | avg15 2.09 | | csw 54184 | intr 33581 | | numcpu 4 |
MEM | tot 8.0G | free 81.9M | cache 2.9G | dirty 0.8M | buff 174.7M | slab 305.0M | | |
SWP | tot 2.0G | free 2.0G | | | | | vmcom 8.4G | vmlim 6.0G |
LVM | Group00-root | busy 85% | read 0 | write 30658 | KiB/w 4 | MBr/s 0.00 | MBw/s 11.98 | avio 0.28 ms |
DSK | xvdb | busy 85% | read 0 | write 23706 | KiB/w 5 | MBr/s 0.00 | MBw/s 11.97 | avio 0.36 ms |
NET | transport | tcpi 2705 | tcpo 2008 | udpi 36 | udpo 43 | tcpao 14 | tcppo 45 | tcprs 1 |
NET | network | ipi 2788 | ipo 2072 | ipfrw 0 | deliv 2768 | | icmpi 7 | icmpo 20 |
NET | eth0 ---- | pcki 2344 | pcko 1623 | si 1455 Kbps | so 781 Kbps | erri 0 | erro 0 | drpo 0 |
NET | lo ---- | pcki 423 | pcko 423 | si 88 Kbps | so 88 Kbps | erri 0 | erro 0 | drpo 0 |
NET | eth1 ---- | pcki 22 | pcko 26 | si 3 Kbps | so 5 Kbps | erri 0 | erro 0 | drpo 0 |
PID RDDSK WRDSK WCANCL DSK CMD 1/1
9862 0K 53124K 0K 98% java
358 0K 636K 0K 1% jbd2/dm-0-8
13893 0K 192K 72K 0% java
1699 0K 60K 0K 0% syslogd
4668 0K 24K 0K 0% zabbix_agentd
이것은 Java pid 9862가 범인임을 분명히 보여줍니다.
TL; DR
을 사용할 수 있으면 iotop
그렇게하십시오. 그렇지 않으면 도움이 될 수 있습니다.
을 사용 top
하고 다음 단축키를 사용 하십시오 .
d 1 = set refresh time from 3 to 1 second
1 = show stats for each cpu, not cumulated
이것은 > 1.0 wa
적어도 하나의 코어에 대한 값을 표시해야합니다. 디스크 대기가 없으면 단순히 IO로드가없고 더 이상 볼 필요가 없습니다. 일반적으로 상당한 부하가 시작 > 15.0 wa
됩니다.
x = highlight current sort column
< and > = change sort column
R = reverse sort order
프로세스 상태 열인 'S'를 선택하십시오. 'R'(실행중인) 프로세스가 맨 위에 표시되도록 정렬 순서를 반대로하십시오. 'D'프로세스 (디스크 대기 중)를 발견 할 수 있으면 범인이 무엇인지 표시 할 수 있습니다.