GNU/Linux >> Linux Esercitazione >  >> Linux

Come eliminare il processo più grande in un sistema Linux che non risponde

Quando apro molte schede nel mio browser, il mio sistema non risponde per diversi minuti. Non riuscivo a spostare il cursore del mouse, o terminare un processo o chiudere le schede aperte. A quel tempo, non avevo altra scelta che ripristinare forzatamente il sistema. Ovviamente uso OneTab e il grande reggicalze estensioni, ma non hanno aiutato molto neanche. Spesso ho esaurito la memoria. Durante la ricerca di una soluzione per risolvere questo problema, mi sono imbattuto in Early OOM . Per coloro che si chiedono, ucciderà il processo più grande in un sistema che non risponde quando non ha assolutamente altre scelte. Early OOM controlla la quantità di memoria disponibile e lo scambio libero 10 volte al secondo. Se entrambi sono inferiori al 10%, verrà interrotto il processo più grande.

Perché presto OOM? Perché non un killer OOM integrato?

Prima di approfondire, lascia che ti dia una breve spiegazione del killer OOM, noto anche come O e O f M assassino di emozioni. OOM killer è un processo utilizzato dal kernel quando la memoria del sistema è estremamente bassa. Il compito principale di OOM killer è continuare a uccidere i processi fino a quando non viene liberata memoria sufficiente per il buon funzionamento del resto del processo che il kernel sta tentando di eseguire. OOM killer sceglierà i processi migliori che sono meno importanti per il sistema, libererà la massima memoria e li ucciderà. Possiamo visualizzare l'oom_score di ogni processo in /proc directory in pid sezione.

Esempio:

$ cat /proc/10299/oom_score
1

Maggiore è il valore di oom_score di qualsiasi processo, maggiore è la sua probabilità di essere ucciso dall'OOM Killer quando il sistema sta esaurendo la memoria.

Lo sviluppatore di Early OOM afferma di avere un grande vantaggio rispetto al killer OOM interno al kernel. Come ho affermato in precedenza, l'oom killer di Linux uccide il processo con il punteggio più alto, quindi il browser Chrome sarà sempre la prima vittima dell'oom killer. Per evitare ciò, Early OOM utilizza /proc/*/status invece di echo f> /proc/sysrq-trigger . Afferma inoltre che l'attivazione manuale di oom killer potrebbe non funzionare affatto nell'ultimo kernel Linux.

Installazione di OOM in anticipo

Early OOM è disponibile in AUR, quindi puoi installarlo utilizzando qualsiasi programma di supporto AUR in Arch Linux e suoi derivati.

Usando :

$ yay -S earlyoom

Abilita e avvia il demone Early OOM:

$ sudo systemctl enable earlyoom
$ sudo systemctl start earlyoom

Su altre distribuzioni Linux, compilalo e installalo manualmente come mostrato di seguito.

$ git clone https://github.com/rfjakob/earlyoom.git
$ cd earlyoom
$ make
$ sudo make install

Uccidi il processo più grande in un sistema Linux che non risponde utilizzando l'OOM iniziale

Esegui il comando seguente per avviare Early OOM:

$ earlyoom

Se l'hai compilato dal sorgente, esegui il comando seguente per avviare Early OOM:

$ ./earlyoom

L'output di esempio sarebbe:

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 %)
[...]

Come puoi vedere nell'output sopra, Early OOM mostrerà quanta memoria e swap hai, qual è il minimo, quanta memoria è disponibile e quanto swap è libero. Ricorda che continuerà a funzionare finché non ti fermi manualmente premendo CTRL+C.

Se sia la memoria che lo scambio raggiungono meno del 10%, Early OOM interromperà automaticamente i processi più grandi finché il sistema non avrà memoria sufficiente per funzionare senza problemi. Puoi anche configurare il valore percentuale minimo secondo le tue esigenze.

Per impostare la memoria disponibile minima su PERCENT del totale, esegui:

$ earlyoom -m <PERCENT_HERE>

Per impostare il minimo di scambio disponibile su PERCENT del totale, esegui:

$ earlyoom -s <PERCENT_HERE>

Per maggiori dettagli, fare riferimento alla sezione della guida.

$ 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 text

Ora non devi preoccuparti dei processi di consumo di memoria più elevati.


Linux
  1. Come uccidere un processo zombie su Linux

  2. Come controllare la versione del sistema operativo e di Linux

  3. Come trovare e uccidere il processo Zombie in Linux

  4. Come cambiare l'identità di un sistema Linux

  5. Come mettere in pausa/riprendere un processo in Linux

Come eliminare l'esecuzione del processo Linux su una porta particolare

Come modificare la shell predefinita nel sistema Linux

Come KILL un processo su Linux

Come utilizzare il comando fd sul sistema Linux

Come uccidere o terminare un processo Linux:la guida definitiva

Come inviare processi in background su Linux