Si j'utilise "top", je peux voir quel CPU est occupé et quel processus utilise tout mon CPU.
Si j'utilise "iostat -x", je peux voir quel lecteur est occupé.
Mais comment voir quel processus utilise tout le débit du disque?
Si j'utilise "top", je peux voir quel CPU est occupé et quel processus utilise tout mon CPU.
Si j'utilise "iostat -x", je peux voir quel lecteur est occupé.
Mais comment voir quel processus utilise tout le débit du disque?
Réponses:
Vous recherchez iotop
(en supposant que vous ayez un noyau> 2.6.20 et Python 2.5). À défaut, vous cherchez à vous connecter au système de fichiers. Je recommande l'ancien.
iotop
semble indiquer la bande passante d'E / S plutôt que le nombre d'IOPS consommées par les processus. Ce n'est pas super pertinent. Un processus faisant beaucoup de petites écritures + synchronisation va consommer plus de la capacité d'E / S du disque qu'un processus écrivant un grand lot contigu de données à grande vitesse.
[jdb2/nvme0n1p1]
dans iotop, mais j'ai eu de la chance en activant / proc / sys / vm / block_dump et en comparant la sortie à un système sain / stable lxadm.com/Simple_filesystem_read/write_tracing_with_/proc/sys/ ... Cela a aidé à trouver un conteneur docker qui engendrait continuellement des requêtes kubectl, épuisant les crédits de rafale d'un volume EBS avec des entrées dans /home/spinnaker/.kube/cache/discovery/.../serverresources.json
. Une fois que vous avez réduit les choses à un nom d'utilisateur / processus, quelque chose comme iotop -atku systemd-network | grep kubectl
peut également aider
Pour savoir quels processus à l'état 'D' (en attente de réponse du disque) sont en cours d'exécution:
while true; do date; ps aux | awk '{if($8=="D") print $0;}'; sleep 1; done
ou
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]
Comme vous pouvez le voir dans le résultat, le jdb2 / dm-0-8 (processus de journal ext4) et kdmflush bloquent constamment votre Linux.
Pour plus de détails, cette URL pourrait être utile: Linux Wait-IO Problem
atop fonctionne également bien et s'installe facilement même sur les anciens systèmes CentOS 5.x qui ne peuvent pas exécuter iotop. Appuyez sur d
pour afficher les détails du disque, ?
pour obtenir de l'aide.
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
Cela montre clairement que java pid 9862 est le coupable.
TL; DR
Si vous pouvez utiliser iotop
, faites-le. Sinon, cela pourrait aider.
Utilisez top
, puis utilisez ces raccourcis:
d 1 = set refresh time from 3 to 1 second
1 = show stats for each cpu, not cumulated
Cela doit afficher les valeurs > 1.0 wa
d'au moins un cœur - s'il n'y a pas d'attente de disque, il n'y a simplement pas de charge d'E / S et il n'est pas nécessaire de chercher plus loin. Des charges importantes commencent généralement > 15.0 wa
.
x = highlight current sort column
< and > = change sort column
R = reverse sort order
Choisissez «S», la colonne d'état du processus. Inversez l'ordre de tri pour que les processus «R» (en cours d'exécution) soient affichés en haut. Si vous pouvez repérer les processus «D» (en attente de disque), vous avez un indicateur de votre coupable.
Pour les utilisateurs de KDE, vous pouvez utiliser «ctrl-esc» pour appeler un moniteur d'activité du système et il y a des graphiques d'activités d'E / S avec l'identifiant et le nom du processus.
Je n'ai pas les autorisations pour télécharger l'image, en raison du «statut du nouvel utilisateur», mais vous pouvez consulter l'image ci-dessous. Il a une colonne pour la lecture et l'écriture d'E / S.
iotop avec l'indicateur -a:
-a, --accumulated show accumulated I/O instead of bandwidth