133 votes

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

Existe-t-il un bon utilitaire en ligne de commande pour surveiller la charge du disque dur sous linux ? Quelque chose comme top mais en surveillant l'activité du disque et l'utilisation du processeur.

Plus précisément, je soupçonne que pour certains serveurs (à forte charge), après plusieurs optimisations sur diverses parties du ou des programmes qui y sont exécutés, le goulot d'étranglement est actuellement simplement la journalisation vers les fichiers sur le disque. Mais je trouve qu'il est très difficile d'évaluer le volume de trafic que les serveurs peuvent supporter.

L'outil idéal serait quelque chose qui imprime "Vous utilisez 35% de votre bande passante disque en ce moment". Des idées ?

2 votes

Question parfaite, c'est exactement ce que je cherchais =)

0 votes

Il est possible de lire sysfs directement, comme /sys/block/sda/stat . Le champ #1 donne le nombre total de lectures, le champ #5 est le nombre total d'écritures, le champ #9 est le nombre d'opérations I/O en cours. Pour en savoir plus kernel.org/doc/Documentation/iostats.txt Les valeurs sont longues non signées et peuvent être enveloppées.

0 votes

C'est une très bonne question car nous sommes toujours confrontés à ce problème sur les serveurs Plesk. Cependant, ce qui manque est how do you do it with SNMP? . C'est bien de se connecter et de vérifier des choses, mais on a vraiment besoin de données historiques.

6voto

Jonukas Points 131

Pour savoir quelle est votre bande passante totale, vous pourriez utiliser hdparm -T /dev/sda pour tester les performances du cache tampon (fileio) hdparm -t /dev/sda pour tester les performances de lecture du dispositif

Exemples : mon ordinateur portable obtient 82MB/sec du disque SATA et 2GB/sec du cache. Mon ordinateur de bureau obtient 12 Go/sec à partir du cache et 500 Mo/sec à partir de la matrice RAID HW. Je pense que ces derniers chiffres pourraient être doublés avec du matériel de classe serveur.

définir un readahead supérieur à 256, 4096 fonctionne mieux pour moi.

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  

temps de lecture de 1 Go pour différentes tailles de blocs et différentes avances de lecture

0 votes

Bienvenue à SF. Vous pouvez utiliser la mise en évidence du code dans vos messages en mettant des guillemets autour des chaînes de caractères ou en indentant les paragraphes.

0 votes

Deux choses - 1) --setra est maintenant -a et 2), le hdparm -{T,t} Les commandes n'effectuent que des lectures de disque, selon strace et ne sont donc pas destructeurs. (L'avertissement standard concernant les conseils sur Internet s'applique)

5voto

Joey deVilla Points 4487

L'outil standard pour montrer la charge du disque dur est iostat .

Il ne vous dira pas quel pourcentage de la bande passante du disque vous utilisez, puisqu'il ne sait pas quelle est la bande passante de votre disque. Dans tous les cas, votre disque ne dispose que de la valeur indiquée par le fabricant pour les transferts importants de données contiguës.

3voto

Scott Gottreu Points 1253

Je pense que RRDtool devrait faire ce que vous voulez. ici Il utilise un démon pour vider les données du 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.

2voto

inquam Points 169

htop est un bon outil pour vérifier les informations sur les processus. Vous pouvez ajouter ou supprimer des colonnes et parmi elles se trouvent les vitesses de lecture et d'écriture des processus.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X