GNU/Linux >> Tutoriels Linux >  >> Linux

Comment déclencher une action en cas de condition de mémoire faible sous Linux ?

Oui, le noyau Linux fournit un mécanisme pour cela :notification de pression de mémoire . Ceci est documenté dans https://www.kernel.org/doc/Documentation/cgroup-v1/memory.txt, section Memory Pressure .

En bref, vous enregistrez un descripteur de fichier eventfd dans /sys/fs/cgroup/memory/memory.pressure_level sur lequel vous souhaitez recevoir des notifications. Ces notifications peuvent être low , medium , ou critical . Un cas d'utilisation typique consisterait à libérer tout ou partie des caches internes de votre processus lorsque vous recevez une notification, afin d'éviter une mise à mort imminente du MOO.


Ce que vous demandez est, en gros, un rappel basé sur le noyau sur une condition de mémoire insuffisante, n'est-ce pas ? Si c'est le cas, je crois fermement que le noyau ne le fait pas fournir un tel mécanisme, et pour une bonne raison : étant à court de mémoire, il devrait immédiatement exécuter la seule chose qui peut libérer de la mémoire - le tueur OOM. Tout autre programme peut arrêter la machine.

Quoi qu'il en soit, vous pouvez exécuter une solution de surveillance simple dans l'espace utilisateur. J'avais la même exigence de débogage/action à faible mémoire dans le passé, et j'ai écrit un bash simple qui a fait ce qui suit :

  • surveiller un filigrane souple : si l'utilisation de la mémoire est supérieure à ce seuil, collecter des statistiques (processus, mémoire libre/utilisée, etc.) et envoyer un e-mail d'avertissement ;

  • surveiller un filigrane dur : si l'utilisation de la mémoire est supérieure à ce seuil, collectez des statistiques et tuez les processus les plus gourmands en mémoire (ou les moins importants), puis envoyez un e-mail d'alerte.

Un tel script serait très léger et pourrait interroger la machine à intervalles rapprochés (c'est-à-dire :15 secondes)


Linux
  1. Comment vérifier l'utilisation de la mémoire sur un serveur basé sur Linux

  2. Comment enregistrer la consommation de mémoire sous Linux ?

  3. Comment utiliser la mémoire partagée avec Linux en C

  4. Comment trouver l'utilisation de la mémoire utilisateur sous Linux

  5. Comment une erreur de mémoire sur un seul bit affectera-t-elle Linux?

Comment vérifier l'utilisation de la mémoire sous Linux

Comment vérifier la mémoire partagée Linux à l'aide de la commande ipcs

Comment effacer la mémoire d'échange sous Linux

Comment désactiver définitivement Swap sous Linux

Comment nettoyer de l'espace disque sur une instance Linux ?

Comment fonctionne la mémoire d'échange sous Linux ?