Come viene calcolato il punteggio del kernel oom?


12

Ho cercato su Google e non sono riuscito a trovare nulla che spiegasse come proc/<pid>/oom_scoreviene calcolato il punteggio . Perché usare questo punteggio invece di usare solo la memoria totale utilizzata?

Risposte:


18

Vedi l' articolo del 2009 di Goldwyn Rodrigues per l'implementazione in quel momento, l' articolo del 2010 di Jonathan Corbet per quello che credo sia il comportamento attuale e l' articolo del 2013 di Jonathan Corbet per idee su cambiamenti futuri.

Dall'articolo del 2010:

Nel set di patch di David, le vecchie euristiche badness () sono quasi completamente scomparse. Al contrario, il calcolo si trasforma in una semplice domanda su quale percentuale della memoria disponibile viene utilizzata dal processo. Se il sistema nel suo insieme ha poca memoria, la "memoria disponibile" è la somma di tutta la RAM e lo spazio di swap disponibili per il sistema. Se, invece, la situazione OOM è causata dall'esaurimento della memoria consentita a un determinato gruppo cpuset / controllo, allora "memoria disponibile" è la quantità totale assegnata a quel gruppo di controllo. Un calcolo simile viene effettuato se i limiti imposti da un criterio di memoria sono stati superati. In ogni caso, l'utilizzo della memoria del processo è considerato come la somma del suo set residente (il numero di pagine RAM che sta usando) e il suo utilizzo di swap.

Questo calcolo produce come risultato un numero percentuale dieci volte; un processo che utilizza ogni byte della memoria disponibile avrà un punteggio di 1000, mentre un processo che non utilizza memoria avrà un punteggio pari a zero. Ci sono pochissime modifiche euristiche a questo punteggio, ma il codice sottrae comunque una piccola quantità (30) dal punteggio dei processi di proprietà della radice sulla convinzione che siano leggermente più preziosi dei processi di proprietà dell'utente.

Un altro tweak che viene applicato è quello di aggiungere il valore memorizzato nella variabile oom_score_adj di ogni processo, che può essere regolata tramite / proc. Questa manopola consente di adattare l'attrattiva di ciascun processo al killer OOM nello spazio utente; impostandolo su -1000 si disabiliteranno completamente le uccisioni di OOM, mentre l'impostazione su +1000 equivale a dipingere un bersaglio di grandi dimensioni sul processo associato.


È possibile che tutti i processi abbiano un punteggio di 0 oom? Attualmente l'avvio da un cd live risulta in questo.
CMCDragonkai,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.