Question Comment puis-je surveiller la charge du disque dur sous Linux?


Existe-t-il un bon utilitaire de ligne de commande pour surveiller la charge du disque dur sous Linux? Quelque chose comme top mais ensuite surveiller l'activité du disque i.s.o. l'utilisation du processeur.

Plus précisément, je soupçonne que pour certains serveurs (à forte charge) après plusieurs optimisations sur différentes parties du ou des programmes qui y sont exécutés, le goulot d'étranglement est simplement la connexion aux fichiers sur le disque. Mais je trouve très difficile d'évaluer le trafic que les serveurs peuvent gérer.

Mon outil idéal serait quelque chose qui indique "Vous utilisez actuellement 35% de votre bande passante disque". Des idées?


88
2018-05-18 13:56


origine


Question parfaite, est exactement ce que je cherchais =) - rafa.ferreira
Il est possible de lire sysfs directement, comme /sys/block/sda/stat. Le champ n ° 1 donne le nombre total de lectures, le champ n ° 5 est le nombre total d'écritures, le champ n ° 9 est le nombre d'opérations d'E / S en cours. Voir plus dans kernel.org/doc/Documentation/iostats.txt Les valeurs ne sont pas signées longtemps et peuvent envelopper. - sastanin
C'est une très bonne question car nous sommes toujours aux prises avec ce problème sur les serveurs Plesk. Cependant, ce qui manque, c’est how do you do it with SNMP?. C'est bien de se connecter et de vérifier des éléments, mais il faut vraiment des données historiques. - Eugene van der Merwe
unix.stackexchange.com/questions/55212/… - Ciro Santilli 新疆改造中心 六四事件 法轮功


Réponses:


Vous pouvez obtenir une assez bonne mesure en utilisant le iostat outil.

% iostat -dx /dev/sda 5

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.78    11.03    1.19    2.82    72.98   111.07    45.80     0.13   32.78   1.60   0.64

L'utilisation du disque est répertoriée dans la dernière colonne. Ceci est défini comme

Pourcentage de temps CPU pendant lequel des demandes d'E / S ont été envoyées au périphérique   (utilisation de la bande passante pour le périphérique). Saturation de l'appareil   se produit lorsque cette valeur est proche de 100%.


77
2018-05-18 14:15



Dans quel paquet cela réside-t-il dans Debian, le cas échéant? apt-cache dump n'a rien révélé pour iostat - hBy2Py
@Brian: C'est dans le paquet sysstat (via miam quand même ...) - Joe
@ Joe Nifty, merci! - hBy2Py
Impossible de trouver ceci sur RHEL 6.5. Est-ce disponible pour RHEL? - Hazok
Cela peut-il fonctionner sans avoir à continuer avec un retard? Essayer d'exécuter une instance unique pour obtenir des données à partir de obtient le même nombre sans doute car il ne peut pas prélever d'échantillons ??? - Wilf


iotop est une version de top qui examine la quantité d’IO utilisée par chaque processus. C'est dans les dépôts standards d'ubuntu; Je ne sais pas si c'est dans RHEL ou Fedora, mais ça devrait l'être.

enter image description here

Pour les noyaux plus anciens (par exemple CentOS 5.x ou RHEL 5.x) qui ne prennent pas en charge iotop, utilisez plutôt topio (documenté ici: http://yong321.freeshell.org/freeware/pio.html#linux. Il repose sur / proc // io pour les statistiques io et fournit des fonctionnalités similaires à celles d'iotop. Voir le lien pour plus de détails.


75
2018-05-18 14:14



En effet, il n’est pas installé par défaut dans Ubuntu, ce qui peut donner problème: sudo apt-get install iotop pour l’obtenir - Moshe
iotop nécessite un noyau supérieur à 2.6.20, ce qui exclut malheureusement RedHat el4 et el5. - Dave Cheney
A partir de RedHat 5.4, les bits nécessaires pour faire fonctionner iotop ont été rétroportés. Prendre plaisir! - Dave Cheney
C'est dans Fedora :). - jamie


Comme suggéré par sastanin dans les commentaires, vous pouvez traiter directement les valeurs données dans /sys/block/sda/stat ou /proc/diskstats. Cela peut être utile lorsqu'aucun des autres outils mentionnés n'est disponible et que vous ne pouvez pas les installer facilement.

Par exemple (IIUC) quelque chose comme ceci (en bash) devrait donner le nombre de lectures par seconde:

OLD=`awk '{print $1}' /sys/block/sda/stat` # First field is number of read I/Os processed
DT=1
for ii in `seq 1 10`
do
    sleep $DT
    NEW=`awk '{print $1}' /sys/block/sda/stat`
    echo $((($NEW-$OLD)/$DT))
    OLD=$NEW
done

Voir https://www.kernel.org/doc/Documentation/iostats.txt et https://www.kernel.org/doc/Documentation/block/stat.txt pour la documentation.


12
2017-07-22 10:16





Vous devriez jeter un oeil à un haut, qui combine la puissance de iotop / top / iftop en un seul endroit et met en évidence les composants critiques de votre système.


5
2018-03-01 04:42





Je recommanderais de jeter un coup d'oeil à l'outil nmon. Il vous montrera le chargement en direct sur un certain nombre de paramètres système ainsi que l’enregistrement de données dans un fichier pour une lecture ultérieure. C'est un outil gratuit disponible ici:


4
2018-05-18 15:52





pour savoir quelle est votre bande passante totale, vous pouvez utiliser hdparm -T /dev/sda tester les performances du cache tampon (fileio) hdparm -t /dev/sda pour tester les performances de lecture du périphérique

exemples: mon ordinateur portable obtient 82 Mo / s du disque SATA et 2 Go / s du cache. Mon dekstop obtient 12 Go / s du cache et 500 Mo / s de la matrice RAID matérielle. Je soupçonne que ces derniers numéros pourraient être doubles sur du matériel de classe serveur.

définissez readahead supérieur à 256, 4096 me convient le mieux

for i in 128 256 512 1024 2048 4096 8192 16384 32768  
do  
hdparm --setra $i  
  for j in 1 2 4 8 16 32  
  do  
  time dd if=/dev/sda of=/dev/null bs="$j"k  count=<fixthis> 1GB / blocksize  
  done  
done  

fois la lecture de 1 Go à différentes tailles de bloc et différentes lectures à l'avance


4
2018-05-18 15:58



Bienvenue à SF. Vous pouvez utiliser la surbrillance de code dans vos publications en mettant des citations arrières autour de chaînes ou de paragraphes en retrait. - ℝaphink
Deux choses - 1) --setra est maintenant -aet 2), le hdparm -{T,t} commandes n'émettent que des lectures de disque, selon strace, sont donc non destructifs. (Un avis de non-responsabilité concernant les conseils sur Internet s'applique) - i336_


L’outil standard pour afficher la charge du disque dur est iostat.

Cela ne vous dira pas combien de% de bande passante vous utilisez, car il ne sait pas combien de bande passante votre disque a. Dans tous les cas, votre disque ne dispose que du chiffre cité par le fabricant pour les transferts importants de données contiguës.


3
2018-05-18 14:02





Je pense que RRDtool devrait faire ce que vous voulez ici il utilise un démon pour vider les données système et vous permet ensuite de les traiter comme vous le souhaitez. Je l'ai souvent utilisé pour produire des graphiques, etc., afin de mesurer la charge du système.


2
2018-05-18 14:03