Dopo otto mesi di sviluppo uscita del processo in background , che controlla periodicamente la quantità di memoria disponibile (MemAvailable, SwapFree) e cerca di reagire precocemente all'insorgenza di carenze di memoria. Il codice del progetto è scritto in C e sotto licenza MIT.
Se la quantità di memoria disponibile è inferiore al valore impostato, earlyoom termina forzatamente (inviando SIGTERM o SIGKILL) il processo che consuma più memoria (avente il valore più alto in /proc/*/oom_score), evitando di portare lo stato del sistema a un livello in cui i buffer di sistema vengono liberati e ostacolando il funzionamento dello swapping (il gestore OOM (Out Of Memory) nel kernel viene attivato quando la carenza di memoria ha già raggiunto valori critici e di solito a quel punto il sistema non risponde più alle azioni dell'utente).
Earlyoom supporta l'invio di notifiche sui processi terminati forzatamente sul desktop (tramite notify-send) e offre la possibilità di definire regole in cui, utilizzando espressioni regolari, è possibile specificare i nomi dei processi il cui termine è preferibile (opzione «—prefer») o il cui arresto si desidera evitare (opzione «—avoid»).
Principali nella nuova versione:
- Grazie a attributi di processo, la logica di selezione dei processi da terminare è stata accelerata del 50%;
- È garantito il registrato nel log dell'UID del processo terminato, oltre al PID e al nome del processo;
- Aggiunta l'evidenziazione del log di debug di colore grigio chiaro;
- Eseguita la pulizia del codice;
- Utilizzato, quando possibile, la dichiarazione di variabili locali all'interno dei blocchi;
- Aggiunta la configurazione PATH_LEN per sostituire il valore hardcoded della dimensione del buffer;
- Eseguito cppcheck se presente;
- Aggiunto un test delle prestazioni "make bench";
- Espanso il set di test (make test);
- Implementato il ripristino dei privilegi di root nel file unit di systemd earlyoom.service. Questa modifica la possibilità di notifiche GUI. Per abilitare le notifiche GUI, si propone di ripristinare i diritti di root decommentando "DynamicUser=true". Disabilitare il root comporta anche l'impossibilità di ottenere informazioni sul consumo di memoria quando si monta /proc in modalità hidepid=1 o hidepid=2.
Fonte: opennet.ru
