Banc d'essai sur ext2, ext3, reiserfs, xfs et jfs

Qing LIU (qliu@club-internet.fr), 7 avril 2002

Introduction

De nos jours, on dispose de plusieurs systèmes de fichiers journalisés sous Linux, dont ext3, reiserfs, xfs et jfs. Il est alors naturel de se demander lequel ou lesquels choisir. Un des critères est la performance du système de fichier. Ici nous testons ces systèmes de fichiers avec un certain nombre de benchmarks courants et un petit test en condition réelle. Cette série de tests n'est en aucun cas exhaustif (j'aurais aimé inclure des tests sous nfs, des tests simulant un serveur web etc). Il serait aussi intéressant de comparer les spécifications, les fonctionalités et la stabilité de ces systèmes de fichiers.

Matériel de test.

Nous avons disposé de deux PC de configurations différentes, appelées x2a (gentiment mise à disposition par Christian L.) et home. Pour le test mongo, nous avons aussi utilisé un autre PC nico (merci Philippe !).

Matériel Processeur Ram Disque hdparm -tT Partition de test
x2a Bi-Pentium III
1 Ghz (Coppermine)
256 Mo SCSI FUJITSU,
UW2, 18 Go
Adaptec AIC 7899
180.28 Mo/sec
52.89Mo/sec
/dev/sda3, 5.9 Go
home Duron 700 Mhz 128 Mo IDE Western
20 Go
142.22 Mo/sec
20.98 Mo/sec
/dev/hda10, 3.6 Go
nico Bi-Pentium II
300 Mhz (Klamath)
128 Mo SCSI SEAGATE
UW 4.5 Go
Adaptec AIC7860.
87.67 Mo/sec
13.82 Mo/sec
/dev/sda5, 2.5 Go

Le swap est désactivé. Sur home le cache écriture (write cache) du disque est activé. Comme on me l'a fait judicieusement remarquer sur la mailing list d'xfs, cela explique, au moins partiellement, pourquoi les benchs sont parfois meilleurs sur home que sur x2a.

Logiciels

x2a
RedHat 7.2. Le noyau est un 2.4.16 + patchs xfs-2.4.16-all-i386 et jfs-1.0.14. Les outils associés sont e2fsprogs 1.25, mkreiserfs 3.x.0j, xfsprogs-1.3.17, jfsutils-1.0.14.tar.gz. Le noyau est compilé avec egcs-1.1.2.

home
Slackware 8.0. Le noyau est un 2.4.16 + patchs xfs-2.4.16-all-i386 et jfs-1.0.10. Les outils associés sont mount-2.11h, e2fsprogs 1.25, mkreiserfs 3.x.0j, xfsprogs-1.3.13, jfsutils-1.0.10.tar.gz. Le noyau est compilé avec gcc 2.95.3.

nico
RedHat 6.1. Le noyau est un 2.4.16 + patchs xfs-2.4.16-all-i386 et jfs-1.0.14. Les outils associés sont e2fsprogs 1.25, mkreiserfs 3.x.0j, xfsprogs-1.3.17, jfsutils-1.0.14.tar.gz.

Paramétrage des systèmes de fichiers

Système de Fichiers Commandes de formattage Options de montage
ext2 mke2fs [*]
ext3-wb mke2fs -j [*] -o data=writeback
ext3  mke2fs -j [*]
reiserfs mkreiserfs -t reiserfs
xfs mkfs.xfs -l size=8192b
jfs mkfs.jfs -s 32 -t jfs

[*] Pour le test mongo, les partitions ext2/ext3 ont été formatées avec l'option -i 4096 pour palier le manque d'inode sur home et nico.

Taille du journal. Pour tous les systèmes de fichiers, la taille des blocs est de 4 Ko, et celle du journal 32 Mo. La taille du journal par défaut est de 32 Mo pour ext3 et reiserfs, 4800 Ko pour xfs, et 0.4% de la taille de la partition pour jfs. Le fait d'accroître la taille du journal a une influence positive pour xfs dans certains tests. Nous n'avons pas mesuré pour jfs.

Conditions de tests

Avant chaque test, la partition est formatée si nécessaire. Si la partition est déjà formatée, elle est démontée remontée. De plus, un petit programme en C se charge de vide au maximum les caches buffer et disque. Sur x2a, le système est en runlevel 3 sans crond, anacron, mais la partie réseau est active (cependant l'accès se limite à deux ssh). Sur home et nico, le système est proche de runlevel 1 + syslog.

Résultats

Bench mongo Pour ce test, une configuration x-up est ajoutée. C'est simplement x2a avec un noyau mono processeur. Reiserfs est le plus rapide quand il s'agit de manipuler un grand nombre de fichiers de petite taille (400,000 ou 800,000 fichiers de 100 octets en moyenne en occurrence). Dans des situations plus ordinaires (moins de 68,000 fichiers de taille moyenne entre 1 et 100 Ko), ext2 est sans surprise le plus performant. Ensuite, ext3 et reiserfs se partagent la vedette, tandis que xfs et jfs sont très légèrement en retrait. Noter que xfs est connu pour sa lenteur dans l'effacement des fichiers. Bien que les choses se soient améliorées dans le noyau 2.4.18, le problème n'est pas encore résolu. Jfs souffre également des mêmes handicapes, mais je ne sais pas si c'est un problème connu.

Un test de la "vie réelle" qui consiste à copier les sources du noyau 2.4.16 vers la partition de test, compiler le noyau et effacer les sources. Dans ce test, ext3 et reiserfs sont équivalents. Avec un petit avantage pour reiserfs sur x2a. Voir aussi un autre petit test sur un portable.

Bonnie Le test est effectué sur un fichier de taille 4 fois la Ram. L'écart entre les systèmes de fichiers n'est pas vraiment significatif à mes yeux. Noter cependant la performance d'ext3 en ré-écriture séquentielle.

Bonnie++ Par ordre de performance: ext3, reiserfs, xfs, jfs.

PostMark Bench simulant un serveur de mail. La différence est très claire entre les systèmes de fichiers: par ordre de performance: ext3, reiserfs, xfs, jfs.

Postal Un autre bench sur le serveur de mail. Ici la tendance s'inverse ! On trouve dans l'ordre jfs, xfs, ext3, et assez loin derrière, reiserfs. Ce test donne des résultats très variables (pour un même système de fichiers) sur home. Je décide de ne pas les publier.

Dbench Ici, reiserfs est nettement meilleur. Suivi de xfs, ext3, et loin derrière par jfs. À noter un problème d'instabilité (plantage du système) sous xfs. Curieusement, sur x2a, un noyau mono-processeur est plus rapide en situation de haute charge pour tous les systèmes de fichiers,

Occupation d'espace disque Reiserfs est le plus économique pour les petits fichiers. En effet il prend 5 fois moins de place que les autres après la création de 800,000 fichiers de taille moyenne de 100 octets. En revanche, pour des fichiers de taille moyenne de 1 Ko, la différence est faible entre les différents systèmes de fichiers avec un avantage d'environ 20% pour reiserfs.

Quelques URL sur les systèmes de fichiers

Ext3 pour noyaux 2.4.
Un document en français sur ext3 rédigé par votre serviteur (la fin du document contient d'autres liens sur ext3).
Site de reiserfs.
Site de xfs.
Site de jfs.

Quelques URL de benchmarks sur les systèmes de fichiers

Les bench par Namesys.
Des tests réalisés par Matteo Dell'Omodarme.
Linux Benchmark Suite Homepage (les outils de tests).