12 votes

Quel est le système de fichiers le plus rapide pour les constructions de développeurs ?

Je suis en train de mettre en place une boîte Linux qui servira de serveur de construction pour l'intégration continue ; nous construirons surtout des choses en Java, mais je pense que cette question s'applique à tout langage compilé.

Quel système de fichiers et quels paramètres de configuration dois-je utiliser ? (Par exemple, je sais que je n'aurai pas besoin d'atime pour cela !) Le serveur de compilation passera beaucoup de temps à lire et écrire de petits fichiers, et à scanner les répertoires pour voir quels fichiers ont été modifiés.

MISE À JOUR : L'intégrité des données n'est pas une priorité dans ce cas ; il s'agit juste d'une machine de construction ... les artefacts finaux seront zippés et archivés ailleurs. Si le système de fichiers sur la machine de construction est corrompu et perd toutes les données, nous pouvons simplement effacer et réimager ; les constructions continueront à fonctionner comme avant.

0 votes

Un doublon possible ? serverfault.com/questions/29193/

0 votes

Lisez le lien que gravyface a donné, mais assurez-vous aussi de mettre de côté la partition dans laquelle vous allez faire vos constructions, vous pouvez ensuite tester les réponses que vous obtenez ici. Si vous avez l'argent, voyez si vous pouvez renoncer à utiliser des disques (en utilisant un ramdisk ou tmpfs). cyberciti.biz/faq/howto-create-linux-ram-disk-filesystem )

7voto

voretaq7 Points 78924

Système de fichiers le plus rapide ? tmpfs monté sur toute la RAM disponible, avec noatime set.

Ceci n'est viable que si vous avez une procédure pour vérifier tout ce qui est nécessaire à la construction de votre arbre des sources (puisque le contenu d'un système de fichiers tmpfs disparaîtra au redémarrage), et si les sources et les objets tiennent dans un coin raisonnable de votre RAM disponible (avec suffisamment de reste pour faire tourner votre compilateur et votre linker sans swapping). Ceci dit, il n'y a rien de mieux que de travailler à partir de la RAM pour la vitesse

0 votes

C'est une excellente réponse, mais pas tout à fait celle que je recherche ; c'est plus de RAM que je ne peux me permettre. (Peut-être dans quelques années, lorsque la RAM sera deux fois moins chère).

0 votes

@Dan - Quelle est la taille de votre arbre des sources ? :-)

0 votes

L'arbre des sources n'est pas si énorme, mais les objets construits et les fichiers de test sont trop volumineux pour tenir en mémoire sans swapping.

7voto

benjismith Points 8739

Utilisez ext4fs comme système de fichiers de base avec quelques options d'accélération telles que

noatime,data=writeback,nobh,barrier=0,commit=300

Ensuite, l'union monte un disque RAM tmpfs au-dessus de cela afin que les fichiers écrits pendant les constructions bénéficient des avantages du disque RAM. Soit vous changez la procédure de construction pour déplacer les binaires résultants hors du tmpfs à la fin de la construction, soit vous fusionnez le tmpfs dans le ext4fs avant de le démonter.

1 votes

Bien qu'elle soit plus rapide, elle mérite d'être notée : barrier=0 , Du wiki arch : "La désactivation des barrières lorsque les disques ne peuvent pas garantir que les caches sont correctement écrits en cas de panne de courant peut entraîner une grave corruption du système de fichiers et une perte de données."

5voto

insider Points 201

A la réponse de Michael Dillon, je peux ajouter que vous pouvez créer un système de fichiers ext4 avec quelques options :

mkfs.ext4 -O dir_index,extent -i 8096 /dev/<disk>

dir_index
    Use hashed b-trees to speed up lookups in large directories.

extent 
    Instead of using the indirect block scheme for storing the location of data blocks in an inode, use extents instead.  This is a  much  more  efficient  encoding  which  speeds  up filesystem access, especially for large files.

-i 8096 vous donne plus d'inodes par taille, utile parce que les environnements de construction créent beaucoup de fichiers.

1voto

cyphun Points 53

Pour les sources, il est préférable de disposer d'un support de compression à la volée, ce qui est le suivant Reiser4 o Btrfs . Les deux ne sont pas encore "pour la production", bien que j'aie entendu parler de personnes utilisant les deux FS de manière intensive et heureuse :-)

Le choix suivant (que je fais habituellement) est Reiser3 no Ext3 . Ext3 peut être un peu plus rapide de nos jours, mais Reiser3 n'a pas de limites de temps pour le format i-nodes, supporte le changement en ligne de l'option "data=". Il a le support de "tail" permettant un emballage plus serré des petits fichiers, mais si vous êtes concerné par la vitesse, "notail".

XFS et JFS seraient tous deux pénibles dans le cas de "beaucoup de petits fichiers", surtout si vous devez les rmiser.

(J'ai oublié de mentionner EXT4 : Oui, il est encore plus rapide que EXT3. Mais toutes les limitations d'EXT3 mentionnées ci-dessus sont aussi celles d'EXT4).

1voto

MagicAndi Points 10128

Pour beaucoup de petits fichiers, je recommanderais Reiser sur ext3, xfs, jfs..., bien que j'aie entendu dire que ext4 est beaucoup mieux (c'est-à-dire l'opposé de ce que dit poise) que ses incarnations précédentes pour ce modèle d'accès.

Reiser repousse une grande partie de la structure des fichiers vers le haut de l'arbre des inodes, ce qui lui permet de fonctionner très bien lorsqu'il s'agit de petits fichiers.

Cependant, les différences de comportement entre les principaux systèmes de fichiers sont relativement faibles par rapport aux avantages que vous obtiendrez en ayant suffisamment de mémoire physique pour mettre en cache/buffer efficacement.

et d'analyser les répertoires pour voir quels fichiers ont été modifiés.

C'est une mauvaise façon de résoudre le problème, même si elle est relativement simple. Si c'est si important, pensez à écrire un fichier inotify pour indexer les mods.

Par contre, si vous utilisez un SSD flash (qui vous donnera des temps de recherche très bas), je vous recommanderais d'utiliser un fs qui distribue les écritures plus efficacement pour des raisons de longévité - par exemple JFFS2.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X