J'ai un serveur plutôt vieux qui a 4 Go de RAM et qui sert essentiellement les mêmes fichiers toute la journée, mais il le fait à partir du disque dur alors que 3 Go de RAM sont "libres".
Toute personne ayant déjà essayé d'exécuter un disque RAM peut témoigner que c'est génial en termes de vitesse. L'utilisation de mémoire de ce système n'est généralement jamais supérieure à 1 Go/4 Go, donc je veux savoir s'il y a un moyen d'utiliser cette mémoire supplémentaire pour quelque chose de bon.
- Est-il possible de demander au système de fichiers de toujours servir certains fichiers à partir de la RAM?
- Existe-t-il d'autres méthodes que je peux utiliser pour améliorer les capacités de lecture de fichiers en utilisant la RAM?
Plus spécifiquement, je ne cherche pas un 'hack' ici. Je veux que les appels au système de fichiers servent les fichiers à partir de la RAM sans avoir besoin de créer un disque RAM et de copier les fichiers manuellement. Ou du moins un script qui le fait pour moi.
Les applications possibles ici sont :
- Serveurs Web avec des fichiers statiques qui sont souvent lus.
- Serveurs d'application avec de grandes bibliothèques.
- Ordinateurs de bureau avec trop de RAM.
Des idées?
Édition :
- Très informatif : La cache Linux et pdflush
- Comme l'a souligné Zan, la mémoire n'est pas vraiment libre. Ce que je veux dire, c'est qu'elle n'est pas utilisée par les applications et je veux contrôler ce qui doit être mis en cache en mémoire.
1 votes
Je cherche également quelque chose dans ce sens. Je ne pense pas que la mise en cache générale des blocs de disque du système de fichiers soit la réponse. Supposons que je veuille que le bloc de disque X soit toujours mis en cache. Quelque chose y accède, et le noyau le met en cache. Jusque-là tout va bien, mais le processus suivant veut le bloc Y, donc le noyau abandonne mon bloc X et met en cache Y à la place. Le prochain processus qui veut X devra attendre qu'il soit retiré du disque; c'est ce que je veux éviter. Ce que je voudrais (et ce que je pense que le message original cherche aussi) est de superposer un cache à écriture automatique sur un système de fichiers qui garantira que les fichiers sont toujours
2 votes
Étant donné que le consensus semble être que Linux devrait déjà mettre en cache les fichiers fréquemment utilisés pour vous, je me demande si vous avez effectivement réussi à apporter des améliorations en suivant les conseils trouvés ici. Il me semble que tenter de contrôler manuellement le cache pourrait être utile pour chauffer le cache, mais qu'avec le schéma d'utilisation que vous décrivez ("servir les mêmes fichiers toute la journée"), cela ne serait pas d'une grande aide pour un serveur déjà chauffé, ou pas du tout.
0 votes
Vous dites que vous ne cherchez pas un hack, mais Linux fait déjà ce que vous voulez faire par défaut. L'équation suivante : "servir les mêmes fichiers toute la journée" + "dire au système de fichiers de toujours servir certains fichiers depuis la RAM" équivaut à un "hack" par définition. Avez-vous réellement remarqué des améliorations de performances ? D'après mon expérience, Linux met en cache vos lectures du système de fichiers.
3 votes
Pour clarification, linux met en cache les fichiers, mais les métadonnées sont validées pour chaque fichier à chaque requête. Sur un disque dur classique, sur un serveur web chargé avec beaucoup de petits fichiers, cela peut quand même causer une contention d'E/S et user prématurément les disques. Le contenu statique et les scripts peuvent être synchronisés avec /dev/shm ou un montage tmpfs personnalisé au démarrage de l'application. J'ai fait cela depuis quelques décennies et mes disques ne s'usent pas prématurément. De plus, mes sites supportent beaucoup mieux les fortes charges de travail de cette manière. Cela aide sur n'importe quel matériel, du plus cher matériel d'entreprise au matériel de base.