Re: oomkiller

Page principale

Répondre à ce message
Auteur: Olivier Allard-Jacquin
Date:  
À: guilde
Sujet: Re: oomkiller
    Bonsoir,

Le 05/10/2017 à 21:26, Yves Martin a écrit :
> On Sun, 2017-10-01 at 09:12 +0200, Frédéric wrote:
>> Le samedi 30 septembre 2017, Yves a écrit :
>>
>>> Christian a répondu... il suffit que le swap soit plein. Ton
>>> problème:
>>> ton swap est probablement trop grand.
>>>
>>> Personnellement je configure le swap au minimum (souvent 512 MiB),
>>> pour
>>> justement que le oomkiller fasse son travail vite, au lieu d'avoir
>>> un
>>> système qui ne répond pas pendant des minutes/heures
>>
>> Je vais essayer. Mon swap est effectivement à 8GB. Au boulot, je l'ai
>> carrément viré, tellement le PC devient inutilisable dès que ça
>> swape.
>
> Bon désolé mais comme personne n'a proposé un bricolage super
> bidouille, voici ma recette:
>
> Pour une hibernation sans swap,
> garder une partition swap au frais.
> Surtout ne pas la monter au boot
> Eplucher les scripts pm-hibernate
> Ajouter une noisette de shell
> Deux pincées de swapon/swapoff
> Avant d'enfourner le tout pour un test.
>
> Bref, ajouter un script de hook qui met à dispo le swap dans le kernel
> uniquement pour l'hibernation... mais le démonter en exécution
> "normale".


    En fait, il y a plus simple :
- tu te crée une partition de swap, que tu formates en temps que swap
(du classique quoi ...)


- MAIS tu ne renseignes PAS le /etc/fstab. Ainsi, l'OS ne l'utilisera pas

- par contre, sous Debian/Ubuntu, tu renseignes le
/etc/initramfs-tools/conf.d/resume avec le UUID du SWAP (commande "blkid")
<texte>
RESUME=UUID=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
</texte>

- pour des confs plus anciennes, il faut mettre en plus dans le
/etc/default/grub
<texte>
GRUB_CMDLINE_LINUX="resume=UUID=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
</texte>

- et tu lances un "update-grub" et "update-initramfs -u -k all", afin
que l'OS le prenne en compte

    Ainsi, le mécanisme d'init cherchera les données d'hibernation dans le
swap. Mais le reste de l'OS l'ignorera.


    Enfin, dernière astuce : Dans les scripts de pm-hibernate, perso je
mets un :


<text>
echo 3 > /proc/sys/vm/drop_caches
</text>

    L'idée est de de vider le cache disque EN LECTURE de la machine, afin
que l'OS ne perde pas de temps à sauver ces infos dans le SWAP. Cela ne
rime à rien que de mettre 10Go de cache disque, si la quantité de
mémoire utilisée par les différents programmes de la machine ne
consomment que 2Go ...


    Bizarrement, l'OS ne le fait pas, alors que c'est une bonne idée.


    La commande ci-dessous donne la quantité de mémoire utilisé par le
cache disque.


<text>
LANG=C free|sed -e '/Mem/!d' -e 's/Mem:\( \+[0-9]\+\)\{4\}
\+\([0-9]\+\).*/\2/g'
</text>



    Cordialement,


                            Olivier
-- 
~~~~~~~  _____/\_____  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Phoenix /   _ \/ _   \    Olivier Allard-Jacquin
       /   / \  / \   \   Web:  http://olivieraj.free.fr/
      /___/  /  \  \___\  Mail: olivieraj@???
~~~~ /////  ///\\\  \\\\\ ~~~~~~~~~~~~~~~~~~~~~~~ Linux Powered !!