Dopo otto mesi di sviluppo rilascio di un processo in background , che controlla periodicamente la quantità di memoria disponibile (MemAvailable, SwapFree) e cerca di reagire precocemente alla mancanza di memoria. Il codice del progetto è scritto in C e è sotto licenza MIT.
Se la quantità di memoria disponibile scende al di sotto di un valore specificato, earlyoom terminerà forzatamente (inviando SIGTERM o SIGKILL) il processo che consuma maggiormente memoria (quello con il punteggio più alto in /proc/*/oom_score), senza far sì che il sistema raggiunga uno stato di pulizia dei buffer e ostaculando il funzionamento dello swapping (il gestore OOM (Out Of Memory) nel kernel si attiva quando lo stato di insufficienza di memoria ha già raggiunto valori critici e di solito a questo punto il sistema non risponde più alle azioni dell'utente).
Earlyoom supporta l'invio di notifiche sui processi terminati forzatamente al desktop (tramite notify-send) e offre anche la possibilità di definire regole, in cui attraverso espressioni regolari possono essere specificati nomi di processi che sarebbe preferibile terminare (opzione "—prefer") o evitare di fermare (opzione "—avoid").
Principali nella nuova versione:
- Grazie a l'attributo dei processi è stato accelerato del 50% nella logica di selezione dei processi da terminare;
- Registrato nel log l'UID del processo in corso di terminazione, oltre a PID e nome del processo;
- Aggiunta evidenziazione del log di debug in grigio chiaro;
- Pulizia del codice effettuata;
- Utilizzati, quando possibile, dichiarazioni locali per i blocchi di variabili;
- Aggiunta impostazione PATH_LEN per sostituire il valore del buffer hardcoded nel codice;
- Garantito l'avvio di cppcheck se presente;
- Aggiunto test di prestazioni 'make bench';
- Espanso il set di test (make test);
- Implementato il ripristino dei privilegi root nel file unitario systemd earlyoom.service. Questa modifica consente la possibilità di notifiche GUI. Per abilitare le notifiche GUI, si consiglia di ripristinare i diritti di root decommentando 'DynamicUser=true'. Disabilitare root porta anche all'impossibilità di ottenere informazioni sul consumo di memoria quando si monta /proc in modalità hidepid=1 o hidepid=2.
Fonte: opennet.ru
