Llista la nova versió de earlyoom 1.4, una utilitat per evitar bloquejos per falta de memòria

a primera hora

A principis d'any parlem aquí al blog sobre la utilitat Earlyoom, la qual després de realitzar una discussió els desenvolupadors de Fedora, es va arribar a l'acceptació per utilitzar aquesta utilitat en Fedora 32 com un procés de fons, amb la qual cosa pretenen millorar la resposta de sistema davant la falta de memòria i amb això evitar bloquejos.

Ara diverses setmanes després i després de vuit mesos de desenvolupament, es va donar a conèixer el llançament de la nova versió de Earlyoom 1.4.

Per als qui desconeixen de el projecte, han de saber que aquest és un subprocés de fons que verifica periòdicament la quantitat de memòria disponible (MemAvailable, SwapFree) i intenta respondre a una condició de falta de memòria en una etapa primerenca. El codi de el projecte està escrit en C i distribuït sota la llicència MIT.

Earlyoom
Article relacionat:
Earlyoom el subprocés que s'inclourà en Fedora 32 per evitar els bloquejos per falta de memòria

Si la quantitat de memòria disponible és menor que el valor especificat, earlyoom acabarà per la força (Mitjançant l'enviament d'SIGTERM o SIGKILL) el procés de l'procés que consumeix la major quantitat de memòria (Que té el valor més alt / proc / * / oom_score), sense que l'estat de sistema esborri els memòria intermèdia de sistema i interfereixi amb el treball intercanvi (el controlador OOM (sense memòria) en el nucli s'activa quan l'estat de poca memòria ja ha assolit valors crítics i, en general, en aquest moment el sistema ja no respon a les accions de l'usuari).

Earlyoom admet l'enviament de notificacions de processos forçats a l'escriptori (mitjançant l'enviament de notificacions), i també proporciona la capacitat de definir regles en les que es poden usar expressions regulars per especificar els noms de processos la finalització es prefereix (l'opció «-prefer») o s'atura que s'ha d'evitar (opció -avoid).

Què hi ha de nou en Earlyoom 1.4?

En aquesta nova versió es destaquen alguns canvis, dels quals s'esmenta que treball en la neteja de el codi i que a més a causa de la càrrega demorada dels atributs de el procés, la lògica de selecció de processos per completar s'accelera en un 50%.

A més de que també es va implementar el restabliment de privilegis de root a l'arxiu de la unitat "systemd earlyoom.service". Amb aquest canvi es trenca la possibilitat de rebre notificacions de GUI.

Per habilitar novament les notificacions GUI, es proposa retornar els drets de root, tragueu la línia «DynamicUser = true".

Encara que a l'desactivar root també fa que sigui impossible obtenir informació sobre el consum de memòria a l'muntar / proc en mode hidepid = 1 o hidepid = 2.

Dels altres canvis que es destaquen:

  • El UID d'el procés acabat es reflecteix en el registre, a més del PID i el nom de l'procés.
  • Es va agregar ressaltat de el registre de depuració en gris clar.
  • Si és possible, es va utilitzar la declaració de variables locals als blocs.
  • Es va agregar la configuració PATH_LEN per reemplaçar el valor de la mida de la memòria intermèdia incrustat en el codi.
  • Possibilitat d'iniciar cppcheck si està disponible.
  • Es va agregar la prova de rendiment «make bench".
  • Conjunt de proves estès (make test).

Finalment si vols conèixer més a l'respecte sobre aquest llançament, pots consultar els detalls al següent enllaç. 

Com instal·lar earlyoom a Linux?

Per als que estiguin interessats en poder provar aquesta utilitat, poden fer-ho seguint les instruccions que compartim a continuació.

Earlyoom es troba dins dels repositoris d'algunes de les distribucions de Linux populars, de manera que, en el cas de Debian, Ubuntu i qualsevol derivat d'aquests, la instal·lació la poden realitzar amb la següent comanda:

sudo apt install earlyoom

Fet això ara s'ha d'habilitar el servei amb la comanda:

sudo systemctl enable earlyoom

I s'inicia amb:

sudo systemctl start earlyoom

Per al cas de Fedora i RHEL 8 amb EPEL, Es pot instal·lar amb la següent comanda:

sudo dnf install earlyoom

I el servei s'activa amb:

sudo systemctl enable --now earlyoom

Finalment, per al cas d'Arch Linux o qualsevol altra derivada d'aquest, La instal·lació es fa amb la següent comanda:

sudo pacman -S earlyoom

I s'activa el servei amb:

sudo systemctl enable --now earlyoom

Per a la resta de les distribucions de Linux, poden realitzar la instal·lació compilat el codi de la utilitat.

Per obtenir el codi el podem fer amb la següent comanda:

git clone https://github.com/rfjakob/earlyoom.git

cd earlyoom

Procedim a realitzar la compilació amb:

make

I vam instal·lar (si tens systemd):

sudo make install

O per als que no tenen systemd:

sudo make install-initscript

I per utilitzar el servei ho fas amb:

./earlyoom


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   Infogon va dir

    Un detall de l'títol: «fata de memòria»

    1.    David Taronger va dir

      Gràcies per l'observació. Salutacions! 🙂

  2.   LinuxmanR4 va dir

    Crec que hi ha un detall amb la instal·lació en Manjaro (derivada d'Arch). No vaig trobar el paquet en els repositoris normals.

    Així que la instal·lació hauria de ser mitjançant yaourt.

    yaourt earlyoom

    Salutacions!

    1.    David Taronger va dir

      En Arch, aquesta dins el repositori community el qual ha d'estar habilitat en pacman.conf. De la mateixa manera com esmentes també està en AUR.

      Gràcies per l'observació 😀

  3.   Fran Pavón va dir

    Hola, vull que aquest servei s'iniciï en MXLinux cada vegada que encenc l'ordinador sense haver de posar la comanda en terminal, com puc fer-ho?