Performances des systèmes de fichiers en boucle

10

Quelqu'un a-t-il fait des tests de performances / benchmarking sur les systèmes de fichiers de bouclage Linux? Quelle a été votre expérience jusqu'à présent. Y a-t-il une dégradation sérieuse des performances? Et la robustesse?

http://freshmeat.net/articles/virtual-filesystem-building-a-linux-filesystem-from-an-ordinary-file

psaccompte
la source
Il devrait être assez simple d'exécuter bonnie ++ sur votre disque natif et sur un disque de bouclage afin de comparer les performances.
Ceving

Réponses:

11

J'ai fait un peu de benchmarking avec des opérations d'écriture dans un périphérique de bouclage. Voici la conclusion:

  • Si vous effectuez une synchronisation après chaque écriture, un périphérique de bouclage est nettement moins performant (presque deux fois plus lent).
  • Si vous autorisez le cache disque d'un planificateur d'E / S à faire son travail, il n'y a pratiquement aucune différence entre l'utilisation d'un périphérique de bouclage et l'accès direct au disque.

Résultats de référence

Tout d'abord, j'ai exécuté un test sur un périphérique de bouclage en tmpfs de 8 Go, et un périphérique de bouclage dans ce périphérique de bouclage ( avec synchronisation après chaque opération d'écriture ):

ext4 dans tmpfs:

Measured speed: 557, 567, 563, 558, 560, 559, 556, 556, 554, 557
Average speed : 558.7 MB/s  (min 554  max 560)

ext4 dans extf dans tmpfs:

Measured speed: 296, 298, 295, 295, 299, 297, 294, 295, 296, 296
Average speed : 296.1 MB/s  (min 294  max 299)

De toute évidence, il existe des différences de performances lors de l'utilisation de périphériques de bouclage avec synchronisation sur écriture.
J'ai ensuite répété le même test sur mon disque dur.
ext4 (disque dur, 1000 Mo, 3 fois):

Measured speed: 24.1, 23.6, 23.0
Average speed : 23.5 MB/s  (min 23.0  max 24.1)

ext4 en ext4 (disque dur, 945 Mo):

Measured speed: 12.9, 13.0, 12.7
Average speed : 12.8 MB/s  (min 12.7  max 13.0)

Même référence sur le disque dur, désormais sans synchronisation après chaque écriture ( time (dd if=/dev/zero bs=1M count=1000 of=file; sync), mesurée comme <size>/ <time in seconds>).
ext4 (disque dur, 1000 Mo):

Measured speed: 84.3, 86.1, 83.9, 86.1, 87.7
Average speed : 85.6 MB/s  (min 84.3  max 87.7)

ext4 en ext4 (disque dur, 945 Mo):

Measured speed: 89.9, 97.2, 82.9, 84.0, 82.7
Average speed : 87.3 MB/s  (min 82.7  max 97.2)

(étonnamment, le benchmark de bouclage semble meilleur que le benchmark de disque brut, probablement en raison de la plus petite taille du périphérique de bouclage, donc moins de temps est consacré à la synchronisation réelle sur le disque)

Configuration de référence

Tout d'abord, j'ai créé un système de fichiers en boucle de 8G dans mon / tmp (tmpfs):

truncate /tmp/file -s 8G
mkfs.ext4 /tmp/file
sudo mount /tmp/file /mnt/
sudo chown $USER /mnt/

J'ai ensuite établi une base de référence en remplissant le fichier de bouclage monté avec des données:

$ dd if=/dev/zero bs=1M of=/mnt/bigfile oflag=sync
dd: error writing '/mnt/bigfile': No space left on device
7492+0 records in
7491+0 records out
7855763456 bytes (7.9 GB) copied, 14.0959 s, 557 MB/s

Après cela, j'ai créé un autre périphérique de bouclage dans le périphérique de bouclage précédent:

mkdir /tmp/mountpoint
mkfs.ext4 /mnt/bigfile
sudo mount /mnt/bigfile /tmp/mountpoint
sudo chown $USER /tmp/mountpoint

Et a exécuté à nouveau la référence, dix fois:

$ dd if=/dev/zero bs=1M of=/tmp/mountpoint/file oflag=sync
...
7171379200 bytes (7.2 GB) copied, 27.0111 s, 265 MB/s

puis j'ai démonté le fichier de test et l'ai supprimé:

sudo umount /tmp/mountpoint
sudo umount /mnt

(de même pour le test sur le disque dur, sauf que j'ai également ajouté count=1000pour empêcher le test de remplir tout mon disque)
(et pour le test de non-écriture sur la synchronisation, j'ai exécuté le chronométré ddet l' syncopération)

Rob W
la source
0

Je n'ai eu aucun problème. Tout a été solide comme le roc. Le cache du système de fichiers et le planificateur d'E / S sous Linux sont suffisamment raisonnables pour ne pas faire de différence notable entre demander directement un disque et demander une section d'un fichier sur un disque.

SystemParadox
la source