Lorsque j'ouvre de nombreux onglets dans mon navigateur, mon système ne répond pas pendant plusieurs minutes. Je ne pouvais pas déplacer le curseur de la souris, tuer un processus ou fermer les onglets ouverts. À ce moment-là, je n'avais pas d'autre choix que de forcer la réinitialisation du système. Bien sûr, j'utilise OneTab et le grand porte-jarretelles extensions, mais elles n'ont pas beaucoup aidé non plus. J'ai souvent manqué de mémoire. En cherchant une solution pour résoudre ce problème, je suis tombé sur Early OOM . Pour ceux qui se demandent, cela tuera le processus le plus important d'un système qui ne répond pas alors qu'il n'a absolument aucun autre choix. Early OOM vérifie la quantité de mémoire disponible et l'échange libre 10 fois par seconde. Si les deux sont inférieurs à 10 %, cela tuera le processus le plus important.
Pourquoi une MOO précoce ? Pourquoi pas un tueur de MOO intégré ?
Avant d'aller plus loin, permettez-moi de vous donner une brève explication du tueur OOM, également connu sous le nom de O ut O f M tueur d'emory. OOM killer est un processus utilisé par le noyau lorsque le système manque cruellement de mémoire. La tâche principale de OOM killer est de continuer à tuer les processus jusqu'à ce que suffisamment de mémoire soit libérée pour le bon fonctionnement du reste du processus que le noyau tente d'exécuter. OOM killer choisira les meilleurs processus qui sont les moins importants pour le système et libérera un maximum de mémoire et les tuera. Nous pouvons voir le oom_score de chaque processus dans /proc répertoire sous pid rubrique.
Exemple :
$ cat /proc/10299/oom_score 1
Plus la valeur oom_score d'un processus est élevée, plus sa probabilité d'être tué par OOM Killer est élevée lorsque le système manque de mémoire.
Le développeur de Early OOM affirme qu'il a un gros avantage sur le tueur de OOM dans le noyau. Comme je l'ai dit plus tôt, le tueur d'oom Linux tue le processus avec le score le plus élevé, de sorte que le navigateur Chrome sera toujours la première victime du tueur d'oom. Pour éviter cela, Early OOM utilise /proc/*/status au lieu de echo f> /proc/sysrq-trigger . Il affirme également que le déclenchement manuel de l'oom killer peut ne pas fonctionner du tout dans le dernier noyau Linux.
Installer la version antérieure de OOM
Early OOM est disponible dans AUR, vous pouvez donc l'installer à l'aide de n'importe quel programme d'assistance AUR dans Arch Linux et ses dérivés.
Utilisation de Yay :
$ yay -S earlyoom
Activer et démarrer le démon Early OOM :
$ sudo systemctl enable earlyoom
$ sudo systemctl start earlyoom
Sur d'autres distributions Linux, compilez-le et installez-le manuellement comme indiqué ci-dessous.
$ git clone https://github.com/rfjakob/earlyoom.git$ cd earlyoom$ make$ sudo make install
Éliminer le plus gros processus d'un système Linux qui ne répond pas à l'aide d'un OOM précoce
Exécutez la commande suivante pour démarrer Early OOM :
$ earlyroom
Si vous l'avez compilé à partir des sources, exécutez la commande suivante pour démarrer Early OOM :
$ ./tôt
L'exemple de sortie serait :
earlyoom 0.12mem total :3863 Mio, min :386 Mio (10 %) swap total :2047 Mio, min :204 Mio (10 %)mem dispo :1770 Mio (45 %), swap gratuit :2047 Mio (99 %disponibilité mem :1 773 Mio (45 %), sans échange :2 047 Mio (99 %) disponibilité mem :1 772 Mio (45 %), sans échange :2 047 Mio (99 %) disponibilité mem :1 773 Mio (45 %), swap gratuit :2047 Mio (99 %)mem dispo :1772 Mio (45 %), swap gratuit :2047 Mio (99 %)mem dispo :1773 Mio (45 %), swap gratuit :2047 Mio (99 %)mem dispo :1771 Mio (45 %), sans swap :2047 Mio (99 %)mem disponible :1773 Mio (45 %), sans swap :2047 Mio (99 %)mem disponible :1784 Mio (46 %), sans swap :2047 Mio (99 %)[...]
Comme vous le voyez dans la sortie ci-dessus, Early OOM affichera la quantité de mémoire et d'échange dont vous disposez, le minimum, la quantité de mémoire disponible et la quantité d'échange libre. N'oubliez pas qu'il continuera à fonctionner jusqu'à ce que vous l'arrêtiez manuellement en appuyant sur CTRL+C.
Si la mémoire et le swap atteignent tous les deux moins de 10 %, Early OOM tuera automatiquement les processus les plus volumineux jusqu'à ce que le système dispose de suffisamment de mémoire pour fonctionner correctement. Vous pouvez également configurer la valeur de pourcentage minimum selon vos besoins.
Pour définir la mémoire disponible minimale sur PERCENT du total, exécutez :
$ earlyoom -m
Pour définir le minimum d'échange disponible sur PERCENT du total, exécutez :
$ earlyroom -s
Pour plus de détails, consultez la section d'aide.
$ earlyoom -h earlyoom 0.12Usage:earlyoom [OPTION]... -m PERCENT définit la mémoire disponible minimum sur PERCENT du total (par défaut 10 %) -s PERCENT définit le swap libre minimum sur PERCENT du total (par défaut 10 %) -M SIZE définit la mémoire disponible minimum à SIZE KiB -S SIZE définir le minimum d'échange libre sur SIZE KiB -k utiliser kernel oom killer au lieu de sa propre implémentation de l'espace utilisateur -i user-space oom killer doit ignorer les valeurs oom_score_adj positives -d activer les messages de débogage -v afficher les informations de version et quitter -r Intervalle de rapport de mémoire INTERVAL en secondes (1 par défaut), défini sur 0 pour désactiver complètement -p définir la gentillesse de earlyoom sur -20 et oom_score_adj sur -1000Désormais, vous n'avez plus à vous soucier des processus de consommation de mémoire les plus élevés.