Je voudrais configurer le système pour utiliser la plupart de la RAM pour la mise en cache des métadonnées du système de fichiers, mais seulement une quantité raisonnablement petite pour la mise en cache en lecture / écriture et la préchargement des fichiers. Idéalement, j'aimerais pouvoir parcourir le système de fichiers (autant qu'il tient dans la RAM) sans faire tourner les disques jusqu'à ce que j'ouvre un fichier.
Voici les détails:
J'ai un serveur de fichiers fait maison. Il a cinq disques dans un volume LVM d'environ 9 To, mais seulement 4 Go de RAM. Comme le serveur ne fait pas grand-chose d'autre que de servir les fichiers, la majeure partie de la RAM est utilisée pour la mise en cache. («Gratuit» signale 3,4 G sur 3,9 G utilisés pour le cache.)
Le serveur habite dans ma chambre, et si tous les disques tournent, il fait suffisamment de bruit pour être ennuyeux quand il est silencieux. (Je ne veux pas dire chercher du bruit, juste du bruit de rotation. Les disques sont de différentes marques et modèles, et je pense que de légères différences de vitesse de rotation provoquent des interférences. Aucun disque n'est bruyant en soi, mais si certains tournent ensemble, il y a un léger bruit avec une période sous-Hertz.) J'ai donc configuré le serveur pour faire tourner les disques la plupart du temps.
Bien sûr, si les disques sont essaimés lorsque j'ouvre un dossier dans mon gestionnaire de fichiers, il y a un délai pendant que l'un des disques a ce dossier tourne. Ce n'est pas grave. Mais selon l'endroit où je regarde, cela peut se produire plusieurs fois de suite, si LVM arrive à répartir les métadonnées de chaque sous-dossier sur les différents disques.
Je soupçonne que Linux remplit principalement son cache avec le contenu des fichiers et peut-être des données prélues. La mise en cache n'est pas très utile au-delà de quelques Mo pour assurer une lecture fluide; si je viens de regarder un film, je ne le reverrai probablement pas de sitôt. La lecture anticipée, si cela se produit, est également complètement inutile dans mon cas , après plus de quelques Mo.
Mais on pourrait penser que 4 Go devraient être suffisants pour pouvoir mettre en cache la plupart des métadonnées du système de fichiers, au moins les parties qui ont déjà été visitées, afin que je puisse parcourir les fichiers sans avoir besoin de faire tourner les disques s'il s'avère qu'ils sont en train de dormir.
Il y aurait toujours un délai lors de l'ouverture du fichier, mais c'est OK. Comparez «cliquez; attendez ; Cliquez sur; attendez ; Cliquez sur; attendez ; jouer; regarder »avec« cliquer; Cliquez sur; Cliquez sur; jouer; attendez ; regarder". Le premier est incroyablement frustrant; ce dernier est presque attendu.
Remarques:
Si cela importe, le noyau est 3.2, le système d'exploitation est Debian, le volume est lvm2 et le FS est ext4.
La seule raison du ralentissement est le bruit pendant la nuit; sinon, le serveur fonctionne en continu. (Je l'ai rendu aussi faible que raisonnable.) Le délai de ralentissement varie en fonction de l'heure de la journée.
Les disques durs sont réservés aux médias. Le système d'exploitation se trouve sur une (petite) clé USB distincte. (Ce qui signifie que tout retard de rotation provient des données, pas seulement parce qu'il avait besoin de quelque chose
/usr
ou quoi que ce soit. Je pourrais épargner quelques Go dessus si cela pouvait aider mon problème d'une manière ou d'une autre.Un impact raisonnable sur les performances n'est pas un gros problème. Les disques sont de toute façon plus rapides que mon réseau.
la source
find / -ls > /dev/null
, puis ralentis les disques, puisfind
tous les fichiers à nouveau, les disques ne tournent pas.free
montre des tampons s'élevant à environ 202 Mo lors de cette opération. Mais, si je lefind
puiscat /file/bigger/than/ram > /dev/null
, puisfree
montre lacached
hausse pour remplir l'espace vide, et pour une raison quelconquebuffers
va à environ 195MB. Ensuite, si je tourne les disques et que jefind
recommence, les disques tournent toujours :-(swappiness
: il est défini sur la valeur par défaut de60
, mais la machine n'a pas de partition de swap, donc je ne sais pas si elle fait beaucoup. Je suppose que je pourrais mettre un fichier d'échange sur le lecteur flash, mais je ne sais pas comment cela pourrait aider, ni comment le dimensionner.