J'ai un problème avec un système Linux bloqué et j’ai trouvé sysstat / sar capable de signaler des pics énormes d’utilisation des E / S de disque, du temps de service moyen ainsi que du temps d’attente moyen au moment du blocage du système.
Comment puis-je déterminer le processus qui cause ces pics la prochaine fois que cela se produit?
Est-il possible de faire avec sar (ie: puis-je trouver cette information à partir des fichiers sar déjà enregistrés?
Sortie pour "sar -d", le décrochage du système s'est produit vers 12h58-13h01.
12:40:01 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
12:40:01 dev8-0 11.57 0.11 710.08 61.36 0.01 0.97 0.37 0.43
12:45:01 dev8-0 13.36 0.00 972.93 72.82 0.01 1.00 0.32 0.43
12:50:01 dev8-0 13.55 0.03 616.56 45.49 0.01 0.70 0.35 0.47
12:55:01 dev8-0 13.99 0.08 917.00 65.55 0.01 0.86 0.37 0.52
13:01:02 dev8-0 6.28 0.00 400.53 63.81 0.89 141.87 141.12 88.59
13:05:01 dev8-0 22.75 0.03 932.13 40.97 0.01 0.65 0.27 0.62
13:10:01 dev8-0 13.11 0.00 634.55 48.42 0.01 0.71 0.38 0.50
C’est une question qui fait suite à un fil que j’avais commencé hier: des pics soudains de charge et de bloc disque attendent , j’espère que c’est bien que j’ai créé un nouveau sujet / question sur le sujet car je n’ai pas encore pu résoudre le problème.
la source
Réponses:
Si vous avez la chance de connaître la prochaine période d'utilisation maximale, vous pouvez étudier les statistiques d'E / S par processus de manière interactive, à l'aide d' iotop .
la source
Vous pouvez utiliser pidstat pour imprimer les statistiques cumulatives io par processus toutes les 20 secondes avec cette commande:
Chaque ligne aura des colonnes suivantes:
La sortie ressemble à ceci:
la source
Rien ne vaut la surveillance en cours, vous ne pouvez tout simplement pas récupérer des données urgentes après l'événement ...
Il y a plusieurs choses que vous pourriez être en mesure de vérifier pour impliquer ou éliminer -
/proc
est votre ami.Les champs 10 et 11 sont les secteurs écrits accumulés et l'écriture de temps accumulé (ms). Cela montrera vos partitions de système de fichiers à chaud.
Ces champs sont les PID, les commandes et les ticks IO-wait cumulés. Cela montrera vos processus chauds, mais seulement s'ils sont toujours en cours d'exécution . (Vous voudrez probablement ignorer les threads de journalisation du système de fichiers.)
L'utilité de ce qui précède dépend du temps de disponibilité, de la nature de vos processus longs et de la façon dont vos systèmes de fichiers sont utilisés.
Mises en garde: ne s'applique pas aux noyaux antérieurs à la version 2.6, vérifiez votre documentation en cas de doute.
(Allez maintenant faire plaisir à votre avenir, installez Munin / Nagios / Cacti / que ce soit ;-)
la source
Utilisez
atop
. ( http://www.atoptool.nl/ )Écrivez les données dans un fichier compressé
atop
pouvant être lu ultérieurement dans un style interactif. Prenez une lecture (delta) toutes les 10 secondes. faites-le 1080 fois (3 heures; si vous l'oubliez, le fichier de sortie ne vous manquera pas de disque):Après que de mauvaises choses se reproduisent:
(même s'il fonctionne toujours en arrière-plan, il ajoute juste toutes les 10 secondes)
Depuis que vous avez dit IO, je taperais 3 touches: tdD
la source
Utilisez
btrace
. C'est facile à utiliser, par exemplebtrace /dev/sda
. Si la commande n'est pas disponible, elle est probablement disponible dans le package blktrace .EDIT : Puisque le fichier debugfs n’est pas activé dans le noyau, vous pouvez essayer
date >>/tmp/wtf && ps -eo "cmd,pid,min_flt,maj_flt" >>/tmp/wtf
ou similaire. La journalisation des erreurs de page n’est bien sûr pas la même chose que d’utiliser btrace, mais si vous êtes chanceux, elle PEUT vous donner un indice sur les processus les plus gourmands en disque. Je viens d’essayer celui-ci sur l’un de mes serveurs les plus intensifs en E / S et la liste inclut les processus qui, je le sais, consomment beaucoup d’E / S.la source