Question Fichiers fréquemment utilisés et utilisation des E / S


Je suis curieux, du point de vue des performances, y a-t-il un avantage à stocker tous les fichiers dans un répertoire par rapport à chaque fichier dans un répertoire séparé? Je ne suis pas préoccupé par l'organisation.

En outre, cela suppose que les fichiers seront souvent consultés, de sorte que l'utilisation des E / S sera élevée. Aucune liste de répertoires n'est impliquée, les fichiers seront tirés par chemin absolu.

L’environnement système est Linux, CentOS 5.3.


6
2017-07-02 09:50


origine




Réponses:


La résolution du chemin d'accès est proportionnelle (mais pas linéairement) au nombre de fichiers dans le répertoire. Cela est vrai même pour la résolution des chemins absolus, car le système de fichiers doit toujours analyser les noms de fichiers dans chaque bloc de répertoire pour résoudre le chemin. Différents systèmes de fichiers ont des caractéristiques de résolution différentes, mais en général, vous constaterez que les performances ont atteint environ 10 000 fichiers.


6
2017-07-02 15:36





À moins que les répertoires ne se trouvent sur des disques ou des RAID différents, vous ne verrez aucune différence notable s'ils sont tous dans un seul répertoire ou non. Les opérations d'E / S de chaque disque sont regroupées dans une file d'attente. S'ils se trouvent sur des RAID différents, vous verrez alors l'avantage notable que vous recherchez.


0
2017-07-02 13:29





Si vous avez assez de mémoire pour stocker tous les fichiers, avez-vous envisagé de les mettre en cache dans la RAM? http://www.linuxmaza.com/system-administration/how-to-mount-ramfs-tmpfs-in-linux/


0
2017-07-02 13:33



s'ils sont si fréquemment utilisés, ils seront mis en cache par le système d'exploitation - Javier
Tant que vous avez assez de mémoire libre, Linux mettra en cache les fichiers les plus récemment utilisés dans la RAM, créant ainsi des performances similaires à celles d'un disque virtuel. - tylerl
Oui, mais il est possible que le contenu du cache soit vidé lorsqu'il effectue autre chose, par exemple, updatedb s'exécute et utilise de la mémoire pour contenir des métadonnées. Un disque virtuel garantit que la mémoire est utilisée pour ce que vous voulez - Matt Simmons


ext3 fait de belles choses:

http://www.ibm.com/developerworks/linux/library/l-fs8.html

Voir l'en-tête de section: Options de journalisation et latence d'écriture.
Cela vous permet de "régler" ext3 pour votre application.


0
2017-07-02 20:34



Cela n'a rien à voir avec cette question, qui concerne les annuaires. - Tobu
Non, je parle de la mise en cache de répertoires. Je n'étais pas explicite je suppose. - jim mcnamara