Comment obtenir des IOPS de lecture et d'écriture totales sous Linux?

32

Comment obtenir des IOPS en lecture et en écriture séparément sous Linux, en utilisant la ligne de commande ou de manière programmatique? J'ai installé le sysstatpackage.

Veuillez me dire comment les calculer séparément à l'aide des sysstatcommandes de package.

Ou est-il possible de les calculer à l'aide du système de fichiers?

ex: /proc ou /sysou/dev

shas
la source

Réponses:

46

iostatfait partie du sysstatpackage, qui peut afficher les iops globaux si vous le souhaitez, ou les montrer séparés par des lectures / écritures.

Exécutez iostatavec l'option -d pour afficher uniquement la page d'informations sur le périphérique et -x pour des informations détaillées (statistiques de lecture / écriture distinctes). Vous pouvez spécifier le périphérique pour lequel vous souhaitez obtenir des informations en l'ajoutant simplement par la suite sur la ligne de commande.

Essayez de courir iostat -dxet de regarder le résumé pour avoir une idée de la sortie. Vous pouvez également utiliser iostat -dx 1pour afficher une sortie actualisée en continu, utile pour le dépannage ou la surveillance en direct,

En utilisant awk, le champ 4 vous donnera des lectures / seconde , tandis que le champ 5 vous donnera des écritures / seconde .

Lectures / seconde uniquement:

iostat -dx <your disk name> | grep <your disk name> | awk '{ print $4; }'

Écrit / s uniquement:

iostat -dx <your disk name> | grep <your disk name> | awk '{ print $5; }'

Lectures / sec et écrit / sec séparés par une barre oblique:

iostat -dx <your disk name> | grep <your disk name> | awk '{ print $4"/"$5; }'

IOPS globales (ce dont la plupart des gens parlent):

iostat -d <your disk name> | grep <your disk name> | awk '{ print $2; }'

Par exemple, l'exécution de la dernière commande avec mon lecteur principal, / dev / sda, ressemble à ceci:

dan@daneel ~ $ iostat -dx sda | grep sda | awk '{ print $4"/"$5; }' 15.59/2.70

Notez que vous n'avez pas besoin d'être root pour l'exécuter non plus, ce qui le rend utile pour les utilisateurs non privilégiés.

TL; DR: Si vous êtes simplement intéressé sda, la commande suivante vous donnera des IOPS globaux pour sda:

iostat -d sda | grep sda | awk '{ print $2; }'

Si vous souhaitez ajouter les IOPS sur tous les appareils, vous pouvez utiliser à nouveau awk:

iostat -d | tail -n +4 | head -n -1 | awk '{s+=$2} END {print s}'

Cela produit une sortie comme ceci:

dan@daneel ~ $ iostat -d | tail -n +4 | head -n -1 | awk '{s+=$2} END {print s}' 18.88

Daneel
la source
Merci Mr.Dannel son utile. si je veux obtenir le système complet IOPS en lecture / écriture Comment obtenir?
2015
quand je cours iostat -dx 1je reçois ans comme ceci Linux 2.6.35.14-106.fc14.i686 (shashi) 08/24/2015 _i686_ (2 CPU) Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 2.46 13.80 2.27 2.03 136.26 123.91 60.53 0.11 25.77 4.43 1.91 dm-0 0.00 0.00 2.35 0.77 93.07 6.11 31.86 0.17 53.73 2.59 0.81 dm-1 0.00 0.00 1.02 2.83 8.14 22.66 8.00 0.83 214.34 0.60 0.23 dm-2 0.00 0.00 1.37 11.89 34.77 95.14 9.80 1.67 126.06 0.84 1.11pour dm-0, dm-1, dm-2 récursivement dois-je ajouter?
shas
J'ai mis à jour la réponse avec un modèle global et un exemple pour sda. Si vous voulez simplement voir les IOPS de votre disque dur, utilisez cette dernière commande pour l'ensemble des IOPS ( iostat -d sda | grep sda | awk '{ print $2; }')
Daneel
Non, je veux séparément comme vous le mentionnez dans la première réponse. peu confus avec dm-*donc j'ai demandé, j'ai besoin d'effectuer un ajout sur ces partitions
shas
Ah d'accord. Vous pouvez utiliser la commande suivante pour vérifier ce qu'est chaque dm-xappareil: lvdisplay|awk '/LV Name/{n=$3} /Block device/{d=$3; sub(".*:","dm-",d); print d,n;}'- Je mettrai à jour la réponse avec cela, ainsi que la façon d'ajouter les résultats.
Daneel