Si quelqu'un se plaint qu'une base de données (ou toute application) s'exécutant sur un serveur (avec un certain système de fichiers ou une configuration RAID) s'exécute plus rapidement que la même base de données ou application s'exécutant sur un autre serveur, vous voudrez peut-être vous assurer que les performances sur le le niveau de disque est le même sur les deux serveurs. Vous pouvez utiliser iozone pour cette situation.
Si vous exécutez votre base de données (ou toute application) sur certains environnements SAN ou NAS, et que vous souhaitez la migrer vers un environnement SAN ou NAS différent, vous devez effectuer benchmark du système de fichiers sur les deux systèmes et comparez-le. Vous pouvez utiliser iozone pour cette situation.
Si vous savez comment utiliser iozone, vous pouvez pratiquement l'utiliser à diverses fins d'analyse comparative du système de fichiers.
Téléchargez et installez IOZone
Iozone est un utilitaire d'analyse comparative de systèmes de fichiers open source.
Suivez les étapes ci-dessous pour télécharger et installer iozone sur votre système.
wget http://www.iozone.org/src/current/iozone3_394.tar tar xvf iozone3_394.tar cd iozone3_394/src/current make make linux
Que mesure l'utilité IOzone ?
IOzone réalise les 13 types de tests suivants. Si vous exécutez le test iozone sur un serveur de base de données, vous pouvez vous concentrer sur les 6 premiers tests, car ils ont un impact direct sur les performances de la base de données.
- Lecture :indique les performances de lecture d'un fichier qui existe déjà dans le système de fichiers.
- Write - Indique les performances d'écriture d'un nouveau fichier dans le système de fichiers.
- Relire :après la lecture d'un fichier, cela indique les performances de lecture d'un fichier à nouveau.
- Réécriture :indique les performances d'écriture dans un fichier existant.
- Lecture aléatoire :indique les performances de lecture d'un fichier en lisant des informations aléatoires à partir du fichier. c'est-à-dire qu'il ne s'agit pas d'une lecture séquentielle.
- Random Write :indique les performances d'écriture dans un fichier à divers emplacements aléatoires. c'est-à-dire qu'il ne s'agit pas d'une écriture séquentielle.
- Lecture arrière
- Réécriture d'enregistrement
- Lecture de la foulée
- Lire
- Fwrite
- Relire
- Réécrire
10 exemples d'IOZone
1. Exécutez tous les tests IOZone en utilisant les valeurs par défaut
-une option représente le mode automatique. Cela crée des fichiers de test temporaires de tailles 64k à 512 Mo pour les tests de performances. Ce mode utilise également des tailles d'enregistrement de 4 000 à 16 000 000 pour les tests de lecture et d'écriture (nous en reparlerons plus tard).
-une option exécutera également les 13 types de tests.
$ ./iozone -a
La première section de la sortie iozone contient les informations d'en-tête, qui affichent des informations sur l'utilitaire iozone et toutes les options iozone utilisées pour générer ce rapport, comme indiqué ci-dessous.
Iozone: Performance Test of File I/O Version $Revision: 3.394 $ Compiled for 32 bit mode. Build: linux Contributors:William Norcott, Don Capps, Isom Crawford, Kirby Collins Al Slater, Scott Rhine, Mike Wisner, Ken Goss Run began: Sat Apr 23 12:25:34 2011 Auto Mode Command line used: ./iozone -a Output is in Kbytes/sec Time Resolution = 0.000001 seconds. Processor cache size set to 1024 Kbytes. Processor cache line size set to 32 bytes. File stride size set to 17 * record size.
La deuxième section de la sortie contient les valeurs de sortie (en par seconde) de divers tests.
- 1ère colonne Ko :indique la taille du fichier utilisé pour le test.
- 2e colonne reclen :indique la longueur de l'enregistrement qui a été utilisée pour le test.
- 3ème colonne jusqu'à la dernière colonne :indique les différents tests effectués et ses valeurs de sortie par seconde.
random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 64 4 495678 152376 1824993 2065601 2204215 875739 582008 971435 667351 383106 363588 566583 889465 64 8 507650 528611 1051124 1563289 2071399 1084570 1332702 1143842 2138827 1066172 1141145 1303442 2004783 64 16 587283 1526887 2560897 2778775 2366545 1122734 1254016 593214 1776132 463919 1783085 3214531 3057782 64 32 552203 402223 1121909 1388380 1162129 415722 666360 1163351 1637488 1876728 1685359 673798 2466145 64 64 551580 1122912 2895401 4911206 2782966 1734491 1825933 1206983 2901728 1207235 1781889 2133506 2780559 128 4 587259 1525366 1801559 3366950 1600898 1391307 1348096 547193 666360 458907 1486461 1831301 1998737 128 8 292218 1175381 1966197 3451829 2165599 1601619 1232122 1291619 3273329 1827104 1162858 1663987 1937151 128 16 650008 510099 4120180 4003449 2508627 1727493 1560181 1307583 2203579 1229980 603804 1911004 2669183 128 32 703200 1802599 2842966 2974289 2777020 1331977 3279734 1347551 1152291 684197 722704 907518 2466350 128 64 848280 1294308 2288112 1377038 1345725 659686 1997031 1439349 2903100 1267322 1968355 2560063 1506623 128 128 902120 551579 1305206 4727881 3046261 1405509 1802090 1085124 3649539 2066688 1423514 2609286 3039423 ...
2. Enregistrez la sortie dans une feuille de calcul à l'aide de iozone -b
Pour enregistrer la sortie iozone dans une feuille de calcul, utilisez l'option -b comme indiqué ci-dessous. -b signifie binaire et indique à iozone d'écrire la sortie du test au format binaire dans une feuille de calcul.
$ ./iozone -a -b output.xls
Remarque :L'option -b peut être utilisée avec n'importe lequel des exemples mentionnés ci-dessous.
À partir des données enregistrées dans la feuille de calcul, vous pouvez créer de jolis graphiques à l'aide de la fonctionnalité graphique de l'outil de feuille de calcul. Voici un exemple de graphique créé à partir de la sortie iozone.
Fig :graphique IOZone
3. N'exécutez qu'un type de test spécifique à l'aide de iozone -i
Si vous souhaitez exécuter uniquement un type de test spécifique, utilisez l'option -i.
Syntaxe :
iozone -i [test-type]
Le type de test est une valeur numérique. Voici les différents types de test disponibles et leur valeur numérique.
- 0=écrire/réécrire
- 1=lu/relu
- 2=lecture/écriture aléatoire
- 3=Lire en arrière
- 4=Réécrire-enregistrer
- 5=lecture foulée
- 6=fwrite/re-fwrite
- 7=lire/Relire,
- 8=mélange aléatoire
- 9=pwrite/Re-pwrite
- 10=lire/Relire
- 11=pwritev/Re-pwritev
- 12=preadv/Re-preadv
L'exemple suivant exécutera uniquement les tests d'écriture (c'est-à-dire à la fois l'écriture et la réécriture). Comme vous le voyez sur la sortie, les autres colonnes sont vides.
$ ./iozone -a -i 0 random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 64 4 353666 680969 64 8 477269 744768 64 16 429574 326442 64 32 557029 942148 64 64 680844 633214 128 4 187138 524591
Combinez plusieurs types de tests iozone
Vous pouvez également combiner plusieurs types de test en spécifiant plusieurs -i dans la ligne de commande.
Par exemple, l'exemple suivant testera à la fois les types de test de lecture et d'écriture.
$ ./iozone -a -i 0 -i 1 random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 64 4 372112 407456 1520085 889086 64 8 385574 743960 3364024 2553333 64 16 496011 397459 3748273 1330586 64 32 499600 876631 2459558 4270078
4. Spécifiez la taille du fichier en utilisant iozone -s
Par défaut, iozone créera automatiquement des fichiers temporaires d'une taille de 64k à 512M, pour effectuer divers tests.
La 1ère colonne de la sortie iozone (avec l'en-tête de colonne Ko) indique la taille du fichier. Comme vous l'avez vu dans la sortie précédente, il commence avec un fichier de 64 Ko et continuera d'augmenter jusqu'à 512 Mo (en doublant la taille du fichier à chaque fois).
Au lieu d'exécuter le test pour toutes les tailles de fichier, vous pouvez spécifier la taille du fichier à l'aide de l'option -s.
L'exemple suivant effectuera un test d'écriture uniquement pour une taille de fichier de 1 Mo (c'est-à-dire 1 024 Ko).
$ ./iozone -a -i 0 -s 1024 random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 1024 4 469710 785882 1024 8 593621 1055581 1024 16 745286 1110539 1024 32 610585 1030184 1024 64 929225 1590130 1024 128 1009859 1672930 1024 256 1042711 2039603 1024 512 941942 1931895 1024 1024 1039504 706167
5. Spécifiez la taille de l'enregistrement pour les tests à l'aide de iozone -r
Lorsque vous exécutez un test, pour une taille de fichier spécifique, il teste avec différentes tailles d'enregistrement allant de 4k à 16M.
Si vous souhaitez effectuer des tests de performances d'E/S d'un sous-système d'E/S qui héberge la base de données Oracle, vous souhaiterez peut-être définir la taille d'enregistrement dans l'iozone sur la même valeur que la taille de bloc de la base de données. La base de données lit et écrit en fonction de la taille du bloc de base de données.
reclen signifie Record Length. Dans l'exemple précédent, la 2ème colonne (avec l'en-tête de colonne "reclen") indique la longueur d'enregistrement qui doit être utilisée pour tester IOzone. Dans l'exemple précédent, pour la taille de fichier de 1 024 Ko, les tests iozone ont utilisé différentes tailles d'enregistrement allant de 4 k à 16 Mo pour effectuer le test d'écriture.
Au lieu d'utiliser toutes ces tailles de longueur d'enregistrement par défaut, vous pouvez également spécifier la taille d'enregistrement que vous souhaitez tester.
L'exemple ci-dessous exécutera un test d'écriture uniquement pour une longueur d'enregistrement de 32 Ko. Dans la sortie, la 2ème colonne n'affichera plus que 32.
$ ./iozone -a -i 0 -r 32 random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 64 32 566551 820553 128 32 574098 1000000 256 32 826044 948043 512 32 801282 1560624 1024 32 859116 528901 2048 32 881206 1423096
6. Combinez la taille du fichier avec la taille de l'enregistrement
Vous pouvez également utiliser les options -s et -r pour spécifier une taille de fichier temporaire exacte et une longueur d'enregistrement exacte qui doit être testée.
Par exemple, ce qui suit exécutera le test d'écriture en utilisant un fichier de 2 Mo avec une longueur d'enregistrement de 1 Mo
$ ./iozone -a -i 0 -s 2048 -r 1024 random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 2048 1024 1065570 1871841
7. Test de débit avec iozone -t
Pour exécuter l'iozone en mode débit, utilisez l'option -t. Vous devez également spécifier le nombre de threads qui doivent être actifs pendant ce test.
L'exemple suivant exécutera le test de débit iozone pour les écritures utilisant 2 threads. Veuillez noter que vous ne pouvez pas combiner l'option -a avec l'option -t.
$ ./iozone -i 0 -t 2 Children see throughput for 2 initial writers 1= 433194.53 KB/sec Parent sees throughput for 2 initial writers = 7372.12 KB/sec Min throughput per process = 0.00 KB/sec Max throughput per process = 433194.53 KB/sec Avg throughput per process = 216597.27 KB/sec Min xfer = 0.00 KB Children see throughput for 2 rewriters = 459924.70 KB/sec Parent sees throughput for 2 rewriters = 13049.40 KB/sec Min throughput per process = 225610.86 KB/sec Max throughput per process = 234313.84 KB/sec Avg throughput per process = 229962.35 KB/sec Min xfer = 488.00 KB
Pour effectuer le débit pour tous les types de test, supprimez le "-i 0" de l'exemple ci-dessus, comme indiqué ci-dessous.
$ ./iozone -t 2
8. Inclure l'utilisation du processeur en utilisant iozone -+u
Lors de l'exécution des tests iozone, vous pouvez également demander à iozone de collecter l'utilisation du processeur à l'aide de l'option -+u.
Le -+ devant l'option peut sembler un peu étrange. Mais, vous devez donner le -+u entier (pas seulement -u ou +u) pour que cela fonctionne correctement.
L'exemple suivant exécutera tous les tests et inclura le rapport d'utilisation du processeur dans la sortie de la feuille de calcul Excel qu'il génère.
$ ./iozone -a -+u -b output.xls
Remarque :Cela affichera une utilisation du processeur distincte pour chaque test effectué.
9. Augmentez la taille du fichier en utilisant iozone -g
C'est important. Si votre système dispose de plus de 512 Mo de RAM, vous devez augmenter la taille du fichier temporaire utilisé par iozone pour les tests. Si vous ne le faites pas, vous risquez de ne pas obtenir de résultats précis, car le cache de la mémoire tampon du système y jouera un rôle.
Pour des performances de disque précises, il est recommandé d'avoir une taille de fichier temporaire égale à 3 fois la taille de votre cache de tampon système.
L'exemple suivant exécutera l'iozone en augmentant la taille maximale du fichier à 2 Go et exécutera les tests automatiques d'iozone pour les tests d'écriture.
$ ./iozone -a -g 2G -i 0 random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 64 4 556674 1230677 64 8 278340 441320 64 16 608990 1454053 64 32 504125 1085411 64 64 571418 1279331 128 4 526602 961764 128 8 714730 518219 ...
10. Testez plusieurs points de montage ensemble à l'aide de iozone -F
En combinant plusieurs options iozone, vous pouvez effectuer des tests d'E/S de disque sur plusieurs points de montage, comme indiqué ci-dessous.
Si vous avez 2 points de montage, vous pouvez démarrer 2 threads iozone différents pour créer des fichiers temporaires sur ces deux points de montage à tester, comme indiqué ci-dessous.
$ ./iozone -l 2 -u 2 -r 16k -s 512M -F /u01/tmp1 /u02/tmp2
- -l indique le nombre minimum de processus iozone à démarrer
- -u indique le nombre maximum de processus iozone qui doivent être lancés
- -F doit contenir plusieurs valeurs. c'est-à-dire que si nous spécifions 2 dans -l et -u, nous devrions avoir deux noms de fichiers ici. Veuillez noter que seuls les points de montage doivent exister. Le fichier spécifié dans l'option -F n'a pas besoin d'exister, car iozone créera ce fichier temporaire pendant le test. Dans l'exemple ci-dessus, les points de montage sont /u01 et /u02. Les fichiers tmp1 et tmp2 seront automatiquement créés par iozone à des fins de test.
Articles précédents de la série sur la surveillance et le réglage des performances Linux :
- Introduction à la surveillance et à l'optimisation des performances de Linux
- 15 exemples pratiques de commandes principales Linux
- 7 exemples pratiques de commandes PS pour la surveillance de processus
- 10 exemples Sar (Sysstat) utiles pour la surveillance des performances UNIX/Linux