J'ai un programme qui consomme beaucoup de mémoire pendant les opérations d'entrée/sortie, ce qui est un effet secondaire de l'exécution d'un grand nombre d'entre elles. Lorsque j'exécute le programme en utilisant direct_io, le problème de mémoire disparaît, mais le temps nécessaire au programme pour terminer son travail est quatre fois plus important.
Existe-t-il un moyen de réduire la taille maximale de la mémoire tampon (mémoire tampon du noyau utilisée lors des opérations d'E/S) ? De préférence sans changer les sources du noyau.
J'ai essayé de réduire /proc/sys/vm/
dirty_bytes, etc. Mais cela ne semble pas faire de différence notable.
UPDATE : en utilisant echo 1 > /proc/sys/vm/drop_caches echo 2 > /proc/sys/vm/drop_caches echo 3 > /proc/sys/vm/drop_caches
Pendant l'exécution du programme, réduit temporairement la quantité de mémoire utilisée.
Puis-je d'une manière ou d'une autre limiter le pagecache, les dentries et les inodes au lieu de les libérer constamment ? Cela résoudrait probablement mon problème.
Je n'avais jamais remarqué cela auparavant, mais le problème se produit avec toutes les opérations d'E/S, pas seulement avec le partitionnement. Il semble que linux mette en cache tout ce qui passe par les E/S jusqu'à un certain point, lorsqu'il atteint presque la mémoire maximale disponible, laissant 4 Mo de mémoire libre. Il y a donc une sorte de limite supérieure pour la quantité de mémoire qui peut être mise en cache pour les E/S. Mais je n'arrive pas à la trouver. Je commence à désespérer. Si je ne peux pas la diviser par 2 quelque part dans les sources du noyau, je le ferai volontiers.
12-12-2016 Mise à jour : J'ai renoncé à résoudre ce problème, mais quelque chose a attiré mon attention et m'a rappelé ce problème. J'ai un vieux disque dur défaillant à la maison et il gaspille des ressources comme un fou quand j'essaie de faire quelque chose avec.
Est-il possible qu'il s'agisse d'un disque dur défaillant ? Le disque dur en question est mort moins d'un mois après l'apparition de mon problème. Si c'est le cas, j'ai ma réponse.