mardi 4 octobre 2011

Btrfs c'est fini

J'expliquais récemment mes soucis de performances avec btrfs. Peu de temps après ce billet, le système de fichiers est carrément parti en carafe. J'avais un vilain kernel panic au démarrage. En lisant des archives de mailing-list consacrées à btrfs, des astuces étaient fournies pour tenter de récupérer le fs, en vain. Bref, ça m'a vacciné de btrfs pour le moment, on verra plus tard ce que ça donne.

J'ai donc réinstallé ma Debian Sid en ext4. D'ailleurs, en passant, debootstrap est packagé dans Fedora. J'ai mis en place une debian via le média live de Fedora. Amusant à faire.

Côté init, j'utilise aussi depuis pas mal de temps systemd. On est passé récemment à la version v36 sous unstable. Pour ceux qui aurait un doute sur le bon fonctionnement de cet outils, voici un verdict sans appel :

systemd[1]: Startup finished in 1s 618ms 170us (kernel) + 2s 462ms 978us (userspace) = 4s 81ms 148us

Et oui, il me faut un peu plus de 4 secondes pour arriver sur la bannière de login de gdm3. Pas mal non ? Surtout que le PC n'est pas de toute première jeunesse (un dual-core avec 2Go de ram). Bon, je triche un peu grâce à l'utilisation d'un ssd, je pense que ça y joue pour beaucoup. J'utilise aussi un kernel vanilla compilé pour ma configuration. De ce fait, je n'ai pas besoin d'initrd, ce qui me fait gagner 2 secondes sur la séquence de démarrage (33% de gagné, c'est tout de même pas mal).

Bref, pour le moment, je recommande chaudement l'utilisation de systemd et le bannissement de btrfs. Pour le moment ...

lundi 22 août 2011

Btrfs sous Debian sid

Récemment, j'ai constaté une baisse de performances sur mon SSD. C'est de ma faute, je me suis rendu compte un peu tard que je n'avais pas activé le TRIM. J'ai donc réinstallé, après avoir bien pris soin de faire un secure erase de mon disque.

J'en ai profité pour passer à btrfs pour la partition racine (je l'utilisais déjà pour ma /home). En utilisant debootstrap, j'ai pu dès le départ monter le système de fichiers avec les options qui vont bien (ssd, discard et compress=lzo entre autres). J'ai été étonné de la lenteur avec laquelle la debian sid s'installait. J'ai tout d'abord pensé que le SSD était entrain de mourir. Le processus est tout de même arrivé à terme après plus d'une heure.

Premier souci lors du premier redémarrage. Grub2 se charge mais arrive sur l'invite de commandes plutôt que sur le menu. Soit ! Après plusieurs tests, le fichier /boot/grub/grub.cfg est pourtant bien présent. Le problème vient de la compression lzo avec btrfs. Grub2 ne sait pas encore lire les fichiers compressés avec cet algo. Par contre, comme le fichier du kernel est binaire, il n'est pas compressé, ce qui explique que j'arrive tout de même à charger Linux.

Deuxième constat, le chargement est rapide, comme avant la réinstallation. Un petit tour avec hdparm me montre qu'il n'y a pas de problème de performances. Bizarre. Par contre, l'installation via apt-get est extrêmement lente. J'ai donc stracé le processus pour voir ce qu'il se passait. Les appels à la fonction fsync semblait très longs. Et comme un très grand nombre de ces appels est fait, forcément, c'est pénalisant. Après une petite recherche, je suis tombé sur le bug 635993, qui ne sera malheureusement pas corrigé. La faute à btrfs qui apparement supporte mal (pour le moment ? ) les demandes trop fréquentes de synchronisation sur disque. Un hack pour résoudre le problème est d'utiliser le wrapper eatmydata qui bypass l'utilisation de fsync. Crado, mais après des tests, ça fonctionne.

Un conseil donc. En l'état, évitez d'utiliser btrfs pour une partition racine sur debian et distributions dérivées (à cause de dpkg). Le système se comporte bien mais l'installation de paquets est calamiteuse. Pour information, je tourne actuellement avec un kernel vanilla 3.0.3. Je teste prochainement avec le 3.1-rc2 pour voir si améliorations il y a.