Je peux penser à une raison plausible de faire cela dans une tâche cron nocturne.
Sur un grand système, il peut être utile de vider périodiquement les caches afin de supprimer la fragmentation de la mémoire.
Le support transparent des énormes pages du noyau effectue un balayage périodique de la mémoire pour regrouper de petites pages en énormes pages. Dans des conditions dégénérées, cela peut entraîner des pauses du système d'une minute ou deux (j'ai vécu cela sous RHEL6 ; espérons que cela s'est amélioré). Vider les caches peut permettre au balayeur d'énormes pages d'avoir de la place pour travailler.
Vous pourriez faire valoir que c'est une bonne raison de désactiver les énormes pages transparentes ; d'un autre côté, vous pouvez estimer que l'amélioration globale des performances des énormes pages transparentes vaut la peine d'accepter de perdre vos caches une fois par jour.
J'ai pensé à une autre raison pour laquelle vous voudriez le faire, bien que pas dans une tâche cron. Juste avant qu'un système de virtualisation ne migre une machine virtuelle vers un nouveau hardware serait un très bon moment pour le faire. Moins de contenu de mémoire à copier vers le nouvel hôte. Vous devrez éventuellement lire à partir du stockage, bien sûr, mais je prendrais probablement ce compromis.
Je ne sais pas si l'un des logiciels de virtualisation le fait réellement.
65 votes
Trouvez la personne qui a mis cela et demandez-lui pourquoi elle l'a fait. Comme vous l'avez deviné correctement, il n'y a pas de raison évidente pour cela.
2 votes
Cette personne n'est plus employée. Je ne peux donc pas lui demander. Lorsque je demande à d'autres personnes, elles disent que c'est une bonne pratique de libérer de la mémoire vive mais je ne vois pas l'intérêt. Dans quels cas devrais-je utiliser le code ci-dessus de toute façon ?
13 votes
Débogage du noyau. C'est tout. Cela ne libère pas réellement de la RAM ; il supprime des caches, comme son nom l'indique, et réduit donc les performances.
1 votes
Au fait, nous avons un serveur sur VMware qui n'a pas beaucoup de mémoire et nous avons une tâche cron qui surveille sa mémoire vive avec
vmstat 2 3|tail -1|awk '{print $4}'
lorsque la valeur baisse de plus que certains montant, il libère des caches sinon le serveur va planter30 votes
@ivcode Ensuite, vous devriez trouver et corriger le problème avec ce serveur plutôt que d'essayer d'éviter les conditions qui le provoquent. Si ma voiture calait à chaque fois que je tournais brusquement à droite, éviter les virages brusques à droite est une solution médiocre.
0 votes
Merci beaucoup @David pour tes explications claires. Cela m'a incité à soumettre la question au développeur logiciel plutôt que de chercher des solutions temporaires.
0 votes
Je ne peux que supposer que peut-être c'était une mesure pour réduire les pertes de données, peut-être à cause de plantages/paniques/pertes de courant fréquents.
7 votes
Lié thedailywtf.com/Articles/Modern-Memory-Management.aspx Fortement affirmant que c'est une mauvaise idée.
2 votes
@EkriirkE pour réduire les pertes de données, seul
sync
serait suffisant, vider les caches n'apporterait rien dans ce but.7 votes
Connexe, et une description utile du "problème": linuxatemyram.com
4 votes
sudo killall -r .*
libère également beaucoup de mémoire0 votes
Peut-être que la personne qui a mis cela est Patrick R : serverfault.com/questions/105606/supprimer-linux-cached-ram
1 votes
@Max
sudo killall -s KILL -r .* `;)`
5 votes
Il s'agit probablement de "système de guano". La personne qui l'a mis là ne se souvient peut-être pas pourquoi il est là, ou si ça fonctionne, ou pourquoi ça fonctionne si ça fonctionne. Peut-être que personne ne sait pourquoi il est là. Il reste là parce que "si ça fonctionne, ne le casse pas". Dans les systèmes avec un contrôle de configuration médiocre, cette merde s'accumule. La réponse à long terme est d'améliorer la gestion de la configuration/changement/révision de vos systèmes. Un système de gestion de configuration comme CFEngine, Chef ou Puppet ne vous empêchera pas de faire des choses stupides, mais vous devrez être constamment stupide, ce qui (nous l'espérons) est plus susceptible d'être repéré et traité.