J'ai un serveur qui a une charge très élevée. Rien ne me saute aux yeux en termes d'utilisation du processeur, et ce n'est pas un échange.
Je pense que cela est dû au fait que certains processus attendent des entrées / sorties sur disque et je veux voir ce qui les attend.
Existe-t-il un programme qui me montre quels processus attendent IO? Je sais à propos de iotop
mais cela montre ce que font actuellement IO.
Ou est-ce une question idiote? (Si oui, expliquez comment :))
iowait
informations requises ,iotop
nécessite des privilèges élevés.watch
,ps
Etawk
ne donner que les informations nécessaires, et ne nécessitent pas des privilèges élevés.ps
les drapeaux POSIX et lesawk
éditer différemment:watch "(ps -eo stat,pid,comm|awk '(NR==1)||(\$1~/D/){print}')"
- de cette façon, vous obtenez les en-têtes de colonne, ainsi que les propriétés stat, pid et command.ps axu
et recherchez les processus qui sont dans l'état "D". Sur la base de la page de manuel ps (1) , les processus en état D sont en veille ininterrompue, ce qui signifie presque toujours "en attente d'IO". Malheureusement, il n'est généralement pas possible de tuer ces processus.la source
La réponse de Zanchey est la meilleure que je connaisse pour savoir ce qui attend IO.
Lorsque vous dites que votre serveur est soumis à une charge de travail élevée, qu'entendez-vous par là? Quelque chose en particulier est lent à réagir?
Si vous vous demandez si votre disque d'E / S est le goulot d'étranglement, j'utiliserais la commande iostat (une partie du package sysstat) pour voir si le disque est réellement soumis à une charge importante.
Exemple:
la source
Activez la journalisation block_dump des processus effectuant des opérations de lecture / écriture en mode bloc:
Lorsque vous avez terminé, désactivez le traçage pour ne pas spammer vos fichiers journaux:
la source