Comment tuer le plus grand processus dans un système Linux qui ne répond pas
Lorsque j'ouvre de nombreux onglets dans mon navigateur, mon système ne répond plus pendant plusieurs minutes. Je ne pouvais pas déplacer le curseur de la souris, ni tuer un processus, ni fermer les onglets ouverts. À ce moment-là, je n’avais d’autre choix que de réinitialiser le système de force. Bien sûr, j'utilise les extensions OneTab et The Great Suspender, mais elles ne m'ont pas beaucoup aidé non plus. Je manquais souvent de mémoire. En cherchant une solution pour résoudre ce problème, je suis tombé sur Early OOM. Pour ceux qui se posent la question, Early MOO tuera le processus le plus important dans un système qui ne répond pas alors qu'il n'a absolument pas d'autre choix. Early OOM vérifie la quantité de mémoire disponible et l'échange gratuit 10 fois par seconde. Si les deux sont inférieurs à 10 %, cela tuera le processus le plus important.
Pourquoi un 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 Out Of Memory killer. OOM killer est un processus que le noyau utilise 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 les moins importants pour le système, libérera un maximum de mémoire et les tuera. Nous pouvons afficher le oom_score de chaque processus dans le répertoire /proc sous la section pid.
Exemple :
$ cat /proc/10299/oom_score
1Plus la valeur oom_score d'un processus est élevée, plus sa probabilité d'être tué par OOM Killer lorsque le système manque de mémoire est élevée.
Le développeur d'Early OOM affirme qu'il présente un gros avantage par rapport au tueur OOM intégré au noyau. Comme je l'ai dit plus tôt, le tueur 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 oom. Pour éviter cela, Early MOO utilise /proc/*/status au lieu de echo f > /proc/sysrq-trigger. Il affirme également que le déclenchement manuel du oom killer peut ne pas fonctionner du tout dans le dernier noyau Linux.
Installer le MOO anticipé
Le premier MOO 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.
En utilisant Yay :
yay -S earlyoomActivez et démarrez le démon Early OOM :
sudo systemctl enable earlyoomsudo systemctl start earlyoomSur 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 installTuez le plus grand processus d'un système Linux qui ne répond pas à l'aide des premiers MOO
Exécutez la commande suivante pour démarrer Early MOO :
earlyoomSi vous l'avez compilé à partir des sources, exécutez la commande suivante pour démarrer Early MOO :
./earlyoomL’exemple de sortie serait :
earlyoom 0.12
mem total: 3863 MiB, min: 386 MiB (10 %)
swap total: 2047 MiB, min: 204 MiB (10 %)
mem avail: 1770 MiB (45 %), swap free: 2047 MiB (99 %)
mem avail: 1773 MiB (45 %), swap free: 2047 MiB (99 %)
mem avail: 1772 MiB (45 %), swap free: 2047 MiB (99 %)
mem avail: 1773 MiB (45 %), swap free: 2047 MiB (99 %)
mem avail: 1772 MiB (45 %), swap free: 2047 MiB (99 %)
mem avail: 1773 MiB (45 %), swap free: 2047 MiB (99 %)
mem avail: 1771 MiB (45 %), swap free: 2047 MiB (99 %)
mem avail: 1773 MiB (45 %), swap free: 2047 MiB (99 %)
mem avail: 1784 MiB (46 %), swap free: 2047 MiB (99 %)
[...]Comme vous le voyez dans la sortie ci-dessus, Early MOO affichera la quantité de mémoire et d'échange dont vous disposez, quel est 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 moins de 10 %, Early MOO 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 minimale selon vos besoins.
Pour définir la mémoire disponible minimale sur PERCENT du total, exécutez :
earlyoom -m <PERCENT_HERE>
Pour définir le minimum d'échange disponible sur POURCENTAGE du total, exécutez :
earlyoom -s <PERCENT_HERE>Pour plus de détails, reportez-vous à la section d'aide.
$ earlyoom -h
earlyoom 0.12
Usage: earlyoom [OPTION]...
-m PERCENT set available memory minimum to PERCENT of total (default 10 %)
-s PERCENT set free swap minimum to PERCENT of total (default 10 %)
-M SIZE set available memory minimum to SIZE KiB
-S SIZE set free swap minimum to SIZE KiB
-k use kernel oom killer instead of own user-space implementation
-i user-space oom killer should ignore positive oom_score_adj values
-d enable debugging messages
-v print version information and exit
-r INTERVAL memory report interval in seconds (default 1), set to 0 to
disable completely
-p set niceness of earlyoom to -20 and oom_score_adj to -1000
-h this help textDésormais, vous n'avez plus à vous soucier des processus de consommation de mémoire les plus élevés.
Ressources :
- Premier dépôt GitHub MOO
- Échange de pile Unix et Linux