Pour le test, j'ai utilisé un Pentium III, avec 16 Mo de mémoire et un disque dur de 2 Go, installé avec la distribution Linux RedHat 6.2. Tous les systèmes de fichiers ont correctement fonctionné chez moi, ce qui m'a fait démarré un petit test de performances pour pouvoir les comparer. Le premier test fut d'arrêter brutalement l'alimentation électrique afin de vérifier la reprise grâce au journal. Tous les systèmes de fichiers ont passé cette phase avec succès, et la machine fut en ordre de marche dans les secondes qui suivirent pour chaque système de fichier.
L'étape suivante est l'analyse de performances en utilisant le programme bonnie++, disponible à http://www.coker.com.au/bonnie++/. Ce programme analyse les accès de type base de données dans un fichier, ainsi que les créations, lectures, et destructions de petits fichiers simulant ainsi les utilisations faites par des programmes tels Squid, INN, ou les programmes utilisant le format Maildir (qmail). La commande utilisée pour lancer le test est :
bonnie++ -d/work1 -s10 -r4 -u0 |
Les résultats apparaissent dans les tableaux ci-dessous :
Ecritures séquentielles | Lectures séquentielles | Accès aléatoires | |||||||||||
Caractère | Bloc | Ré-écriture | Caractère | Bloc | |||||||||
SF | Espace de test | Ko/sec | % CPU | Ko/sec | % CPU | Ko/sec | % CPU | Ko/sec | % CPU | Ko/sec | % CPU | Ko/sec | % CPU |
ext2 | 10 Mo | 1471 | 97 | 14813 | 67 | 1309 | 14 | 1506 | 94 | 4889 | 15 | 309 | 10 |
ext3 | 10 Mo | 1366 | 98 | 2361 | 38 | 1824 | 22 | 1482 | 94 | 4935 | 14 | 317,8 | 10 |
xfs | 10 Mo | 1206 | 94 | 9512 | 77 | 1351 | 33 | 1299 | 98 | 4779 | 80 | 229,1 | 11 |
reiserfs | 10 Mo | 1455 | 99 | 4253 | 31 | 2340 | 26 | 1477 | 93 | 5593 | 26 | 174,3 | 5 |
Créations séquentielles | Créations aléatoires | ||||||||||||
Création | Lecture | Destruction | Création | Lecture | Destruction | ||||||||
SF | Nombre de fichiers | / sec | % CPU | / sec | % CPU | / sec | % CPU | / sec | % CPU | / sec | % CPU | / sec | % CPU |
ext2 | 16 | 94 | 99 | 278 | 99 | 492 | 97 | 95 | 99 | 284 | 100 | 93 | 41 |
ext3 | 16 | 89 | 98 | 274 | 100 | 458 | 96 | 93 | 99 | 288 | 99 | 97 | 45 |
xfs | 16 | 92 | 99 | 251 | 96 | 436 | 98 | 91 | 99 | 311 | 99 | 90 | 41 |
reiserfs | 16 | 1307 | 100 | 8963 | 100 | 1914 | 99 | 1245 | 99 | 1246 | 100 | 1725 | 100 |
Deux résultats sont montrés par type de test : le débit du système de fichiers (en Ko par seconde) et le temps d'utilisation du processeur (en %). Plus les chiffres de débit sont élevés, meilleurs ils sont pour le système de fichiers. L'inverse est vrai pour le temps processeur.
Ainsi que vous pouvez le voir, ReiserFS remporte haut-la-main la victoire pour la gestion de fichiers (sections « Créations séquentielles » et « Créations aléatoires »), dépassant ses opposants d'un facteur supérieur à 10. De plus, il est quasiment aussi bon que les autres systèmes de fichiers dans les lectures et écritures séquentielles. Il n'y a pas de différence significative entre les autres systèmes de fichiers. XFS est aussi rapide que ext2, et ext3, comme prévu, un peu plus lent que ext2 (qui fait la même chose, la perte de temps dues aux appels systèmes pour la journalisation en moins.)
Le dernier test employé est mongo, un programme disponible sur la page benchmark pour ReiserFS de www.namesys.com, programme que j'ai modifié pour tester les trois systèmes de fichiers journalisés. J'ai inséré dans le script perl mongo.pl les commandes pour monter les systèmes de fichiers XFS et ext3 et pour les formater. Puis j'ai lancé le banc de test.
Le script initialise une partition /dev/xxx, la monte, et fait tourner un certain nombre de processus dans chaque phase : création de fichier, copie, lien symbolique, lectures, état du fichier[1], renommage, et destruction du fichier. Mongo calcule aussi la fragmentation après les phases de création et de copie :
Vous trouverez les résultats du test sous différentes formes dans le répertoire results : Les tests furent exécutés comme indiqué dans l'exemple suivantFragmentation = nombre de fragments / nombre de fichiers
mongo.pl ext3 /dev/hda3 /work1 logext3 1 |
Vous trouverez dans les tables suivantes les résultats de l'analyse. Les données correspondent au temps d'exécution, en secondes, la valeur la moins élevée étant la meilleure. Dans le premier tableau, la taille moyenne d'un fichier est de 100 octets, dans le second, 1000 octets, et dans le dernier, 10000 octets.
ext3 files=68952 size=100 bytes dirs=242 | XFS files=68952 size=100 bytes dirs=241 | reiserFS files=68952 size=100 bytes dirs=241 | |
Création | 90,07 | 267.86 | 53,05 |
Fragmentation | 1,32 | 1,02 | 1,00 |
Copie | 239,02 | 744,51 | 126,97 |
Fragmentation | 1,32 | 1,03 | 1,80 |
Liens symboliques | 0 | 203,54 | 105,71 |
Lecture | 782,75 | 1543,93 | 562,53 |
Etat des fichiers (stat) | 108,65 | 262,25 | 225,32 |
Renommage | 67,26 | 205,18 | 70,72 |
Destruction | 23,80 | 389,79 | 85,51 |
ext3 files=11248 size=1000 bytes dirs=44 | XFS files=11616 size=1000 bytes dirs=43 | ReiserFS files=11616 size=1000 bytes dirs=43 | |
Création | 30,68 | 57,94 | 36,38 |
Fragmentation | 1,38 | 1,01 | 1,03 |
Copie | 75,21 | 149,49 | 84,02 |
Fragmentation | 1,38 | 1,01 | 1,43 |
Liens symboliques | 16,68 | 29,59 | 19,29 |
Lecture | 225,74 | 348,99 | 409,45 |
Etat des fichiers (stat) | 25,60 | 46,41 | 89,23 |
Renommage | 16,11 | 33,57 | 20,69 |
Destruction | 6,04 | 64,90 | 18,21 |
ext3 files=2274 size=10000 bytes dirs=32 | XFS files=2292 size=10000 bytes dirs=31 | reiserFS files=2292 size=10000 bytes dirs=31 | |
Création | 27,13 | 25,99 | 22,27 |
Fragmentation | 1,44 | 1,02 | 1,05 |
Copie | 55,27 | 55,73 | 43,24 |
Fragmentation | 1,44 | 1,02 | 1,12 |
Liens symboliques | 1,33 | 2,51 | 1,43 |
Lecture | 40,51 | 50,20 | 56,34 |
Etat des fichiers (stat) | 2,34 | 1,99 | 3,52 |
Renommage | 0,99 | 1,10 | 1,25 |
Destruction | 3,40 | 8,99 | 1,84 |
De ces tableaux, vous pouvez voir que ext3 est souvent plus rapide pour les opérations de type stat, destruction et renommage de fichier, alors que ReiserFS gagne pour les opération de création et de copie. Notez également que les temps d'exécution de ReiserFS sont meilleurs dans le premier cas (petits fichiers) comme prévu dans sa documentation technique.
[1] | NdT : de l'appel système stat |