Je dois faire beaucoup de petits accès aléatoires à tout un tas de fichiers. J'ai plus que suffisamment de mémoire principale pour contenir toutes les données. p>
Lorsque je copie les données sur un système de fichiers temporaires de la RAMFS et le traiter là-bas, cela ne prend qu'une petite fraction du temps que l'attente de l'accès des disques prendrait. p>
existe-t-il un système de fichiers Linux qui détient toutes ses données dans la mémoire principale, écrit toutes les modifications à un disque de support, mais ne touche jamais le disque pour des lectures? p>
Si non, peut, dire, EXT3 caches être réglés de manière à ce qu'ils soient garantis pour contenir 100% des données et des métadonnées? P>
3 Réponses :
Si vous ne lisez que des données, vous pouvez effectivement accorder la mise en cache de telle sorte que toutes les données soient mises en cache dans la RAM - voir / USR / SRC / Linux / documentation / SYSCTL / FS.txt Strike> VM. TXT pour plus de détails sur ce que vous pouvez modifier ici. Le problème se pose lorsque vous écrivez des données, en particulier si vous utilisez FSYNC () ou similaire pour vous assurer que les données ont été commises au disque réel. P>
comme le système d'exploitation a em> pour mettre à jour le disque dans le cas d'un Un problème que vous pouvez exécuter est le FSYNC () code>, il n'y a pas grand chose que vous pouvez faire si vous voulez toujours assurer la cohérence de vos données. et ne serait pas perdu dans une coupe de puissance. P>
ATime code> ou l'heure d'accès - Par défaut, chaque fois qu'un fichier est accessible, l'heure d'accès est mise à jour dans l'INODE. Cela entraînera des écrires de disque même lorsque vous pensez que vous n'effectuez que des lectures. Cela peut être un problème particulier dans votre scénario où vous accédez à de nombreux petits fichiers. Si vous ne vous souciez pas de suivre l'heure d'accès, vous pouvez monter votre système de fichiers avec le
noatime code> pour désactiver cette "fonctionnalité". P>
Ne cherche pas FS.txt est pertinent pour cette question, à moins que je ne manquiez ce que vous vouliez spécifiquement là-bas?
@MIKAELHG: Désolé, j'ai commis une erreur - je voulais dire 'sysctl / vm.txt' qui a divers boutons que vous pouvez modifier, tels que vfs_cache_pressure. Je vais mettre à jour la réponse.
Pourquoi n'essayez-vous pas de créer un miroir RAID entre un RAMDISK et un disque physique? P>
Je ne sais pas si c'est efficace cependant. Si le miroir doit toujours être synchronisé, il devra attendre le disque quand vous écrivez, mais pour la lecture, vous devriez gagner quelque chose. Mais oui, pour moi, cela ressemble beaucoup à une mise en cache carrée compliquée et réinventée :) p>
serait une belle expérience, cependant. P>
Cela a fini par être la bonne réponse, avec Mdadm -Write - surtout.
En fait, je connais simplement les points de repère aujourd'hui. Amazon EC2 est vraiment incroyablement pratique pour tester ces idées folles.
Cela ferait une différence lors de la première mise en place du miroir - RAID ferait une analyse linéaire pour renseigner le disque RAM, qui est beaucoup plus efficace que de faire beaucoup de cherche aléatoire pour remplir le cache normal.
Jetez un coup d'œil à ceci: p>
Vous pouvez monter un fichier en tant que FS dans un RAMDISK, puis sauvegarder comme un fichier. P>
Neurez pas que vous souhaitiez sauvegarder fréquemment, mais c'est une bonne solution pour enregistrer tout le disque virtuel en une seule fois. P>