Comment tester les performances de IO sous Linux?
Le benchmark IO et système de fichiers est un sujet complexe. Aucun outil d'analyse comparative unique n'est bon dans toutes les situations. Voici un petit aperçu des différents outils d'analyse comparative:
Stockage en bloc:
Système de fichiers (synthétique):
Système de fichiers (charge de travail):
Stony Brook University et IBM Watson Labs ont publié un article de journal hautement recommandé dans le "Transaction of Storage" sur l'analyse comparative du système de fichiers, dans lequel ils présentent différents points de référence et leurs points faibles: ne étude de neuf ans sur le système de fichiers et l'analyse comparative du stockage . L'article souligne clairement que les résultats de la plupart des repères sont au moins discutables.
Une note: La question est-elle liée à la programmation? Peut-être pas, mais c'est peut-être le cas. Je passe beaucoup de temps à comparer les performances des systèmes que je développe .IO. ne sont pas liés au développement/à la programmation de votre point de vue. Le point de vue des autres développeurs peut être différent.
outil: fio
lien: http://freshmeat.net/projects/fio/
tester le disque physique IO:
./fio examples/disk-zone-profile
définir le paramètre: séquentiel r/w: rw = lecture ou rw = écriture aléatoire r/w: rw = randread ou rw = randwrite
si vous avez besoin d'un moyen rapide sans avoir à installer quoi que ce soit. C'est la méthode que j'utilise pour test de vitesse d'écriture:
dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync
Et la sortie est quelque chose comme ça
root@rackserver:/# dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync
16384+0 records in
16384+0 records out
1073741824 bytes (1.1 GB) copied, 4.86922 s, 221 MB/s
Aussi: supprimez le fichier de test après cela pour récupérer l'espace supplémentaire utilisé
Quelques explications:
bs = block size
count = the no of blocks to be written
Ajustez ces paramètres pour modifier la taille du fichier écrit selon les spécifications de votre serveur et le temps que vous souhaitez consacrer à l'écriture.
la vitesse de lecture comme déjà suggéré par gtsouk, peut être vérifié en utilisant/dev/null comme sortie.
dd if=/dev/sda of=/dev/null
Laissez cela fonctionner pendant quelques minutes et arrêtez-le avec ctrl + C. Il imprimera la vitesse de transfert en lecture de votre lecteur/contrôleur. Il s'agit de la vitesse de lecture maximale que vous pouvez retirer de votre lecteur.
sysbench
Voir http://www.howtoforge.com/how-to-benchmark-your-system-cpu-file-io-mysql-with-sysbench
Exemple
sysbench --test=fileio --file-total-size=150G prepare
sysbench --test=fileio --file-total-size=150G --file-test-mode=rndrw --init-rng=on --max-time=300 --max-requests=0 run
Il peut également tester les performances du processeur, de la mémoire, des threads et du serveur de base de données,
C'est génial.
Ou tester un logiciel écrit en Java: http://www.dacapobench.org/
vous devez spécifier ce que vous testez, sinon les repères ne feront qu'induire en erreur. Il y a différents aspects des performances de IO que vous devez choisir pour optimiser, et différents paramètres pour jouer avec.
Vos paramètres système:
Vos paramètres de test:
Il existe un excellent programme pour tester le stockage de blocs IO sur Unix appelé IORATE. Vous pouvez en obtenir une copie sur iorate.org.
Il peut générer des E/S mixtes complexes, y compris la réutilisation (hits) et des zones chaudes pour les tests de stockage à plusieurs niveaux.
Jetez un œil à IOzone: http://www.iozone.org/
Si vous souhaitez lire un livre blanc illustrant l'utilisation du monde réel sur un cluster HPC, veuillez consulter ce pdf, page 36: http://i.Dell.com/sites/content/business/solutions/hpcc/ fr/Documents/Dell-NSS-NFS-Storage-solution-final.pdf