Existe-t-il un moyen de dire au noyau Linux d'utiliser uniquement un certain pourcentage de mémoire pour le cache de tampon? Je sais que /proc/sys/vm/drop_caches
peut être utilisé pour effacer temporairement le cache, mais y a-t-il un paramètre permanent qui l'empêche d'augmenter à plus de 50% de la mémoire principale, par exemple?
La raison pour laquelle je veux le faire, c'est que j'ai un serveur exécutant un OSD Ceph qui sert constamment des données du disque et parvient à utiliser toute la mémoire physique comme cache de tampon en quelques heures. Dans le même temps, je dois exécuter des applications qui alloueront une grande quantité (plusieurs 10 s de Go) de mémoire physique. Contrairement à la croyance populaire (voir les conseils donnés sur presque toutes les questions concernant le cache de tampon), la libération automatique de la mémoire en supprimant les entrées de cache propres n'est pas instantanée: le démarrage de mon application peut prendre jusqu'à une minute lorsque le cache de tampon est plein ( *), alors qu'après avoir effacé le cache (en utilisant echo 3 > /proc/sys/vm/drop_caches
) la même application démarre presque instantanément.
(*) Pendant cette minute de démarrage, l'application fait défaut dans la nouvelle mémoire mais passe 100% de son temps dans le noyau, selon Vtune dans une fonction appelée pageblock_pfn_to_page
. Cette fonction semble être liée au compactage de la mémoire nécessaire pour trouver des pages volumineuses, ce qui m'amène à croire que la fragmentation est le problème.