Forum Linux.débutant Que faire quand le système freeze faute de RAM ?

Posté par  (site Web personnel) . Licence CC By‑SA.
0
7
mai
2020

En ce moment, j'ai besoin de travailler avec des machines VirtualBox sur un portable Kubuntu avec 8 Go de RAM (et sans swap). Donc avec une machine virtuelle lancée, de temps en temps si je ne fais pas attention je peux saturer la RAM et le système se bloque : la souris est figée et le clavier aussi apparemment, donc impossible de passer dans une console virtuelle. Plus qu'à éteindre et redémarrer…

Y'a pas de combinaison de touches magique pour s'en sortir ?

Est-ce qu'il n'y aurait pas moyen de configurer le système pour que le noyau vire des processus quand il n'y a plus de RAM libre ? Après tout, c'est le noyau qui alloue la mémoire, alors pourquoi il ne fait rien ?

Faut-il que j'installe un fichier de swap pour avoir du mou ? Sur un SSD, je ne sais plus si c'est vraiment conseillé…

  • # oui, non, peut-être

    Posté par  . Évalué à 4.

    si tu fais une VM dans virtual box, il est fortement recommandé de ne pas dépasser la moitié de la RAM du système principal, sous peine en effet de faire peter l'OS => machine figée, reboot obligatoire

    tu peux installer le oomkiller
    c'est un daemon qui va tuer des process pour libérer de la RAM.

    faire de la swap sur du SSD, ce n'est pas interdit, le SSD résiste mieux que les cartes SD
    tu peux quand meme tuner ensuite l'usage de ce swap en modifiant le paramètre de swapiness

    • [^] # Re: oui, non, peut-être

      Posté par  (site Web personnel) . Évalué à 1.

      Merci NeoX,

      je vois effectivement dans Ubuntu un paquet earlyoom :
      https://github.com/rfjakob/earlyoom

      Je vais d'abord mettre un swapfile. D'après ce que je lis ici :
      https://unix.stackexchange.com/questions/38507/is-it-possible-to-trigger-oom-killer-on-forced-swapping
      ça voudrait dire qu'avec un swap, le système aurait le temps de libérer un peu de mémoire et moi le temps de réagir avant qu'il ne soit trop tard ? Il me semble comprendre que le noyau a son propre oom-killer, mais que sans swap il n'arrive pas à l'activer ? J'ai déjà attendu quelques minutes dans ce genre de situation sans qu'il ne se passe rien…

      • [^] # Re: oui, non, peut-être

        Posté par  . Évalué à 2.

        C'est exactement la raison pour laquelle j'ai ajouté un swapfile sur mon linux après avoir été plusieurs mois sans swap et rencontré de temps à autre le problème que tu décris …

        Et effectivement depuis que j'ai ajouté le swap je n'ai plus de freeze.

        eric.linuxfr@sud-ouest.org

        • [^] # Re: oui, non, peut-être

          Posté par  (site Web personnel) . Évalué à 1.

          Effectivement, je viens d'ajouter un swapfile sur ma partition utilisateur (cryptée) et je n'arrive plus à freezer le système malgré trois machine virtuelles lancées et cinq ou six autres applications…
          Le système swappe, mais en même temps pas tant que ça, il n'y a que quelques centaines de Mo dans le swap. Et pas de ralentissement.
          Je pense que la plupart du temps, avec mes 8 Go le swap sera vide. C'est juste parce qu'en ce moment j'ai besoin de VirtualBox. D'ailleurs je vais également baisser la RAM de mes machines virtuelles.

          • [^] # Re: oui, non, peut-être

            Posté par  . Évalué à 4.

            Avant de swapper, tu peux déjà tester de configurer zram ou zswap.

            perso j'utilise un script qui appelle l'outil zramctl :

            sudo zramctl /dev/zram0 --size 4G --algorithm lz4
            sudo mkswap /dev/zram0
            sudo swapon /dev/zram0

            Tu peux allouer plus haut que 4Go, du moment que ça ne dépasse pas la taille physique de la RAM. Le choix de l'algo de compression est un compromis, lzo taxera moins le CPU que lz4 mais compressera moins.

  • # Des touches magiques

    Posté par  . Évalué à 3.

    Salut,

    Vu tes messages ici, j'ai peine à croire que tu ne connais pas, mais au cas où : magic SysRq key

    Dès fois ça aide à s'en sortir. D'autres fois pas :)

    • [^] # Re: Des touches magiques

      Posté par  (site Web personnel) . Évalué à 1.

      Merci,
      effectivement c'est ce à quoi je pensais, j'avais retrouvé un vieux document des années 2000 qui parlait de ça, mais ça n'avait rien donné. Je me disais que ça avait peut-être disparu du noyau…
      Je vais regarder ça et faire des tests, ça peut toujours être utile d'avoir ce genre de solution sous la main dans les cas désespérés !

      • [^] # Re: Des touches magiques

        Posté par  . Évalué à 1.

        Salut,

        effectivement c'est ce à quoi je pensais

        Ah super si c'est ce à quoi tu pensais. Non non, ça existe toujours :)

        Selon les usages, en mode freezé, tu peux tenter juste le k pour voir, mais je n'ai jamais trouvé que ça marchait trop bien.

        Du coup, ma séquence (et le moyen mnémotechnique de dev), c'est de me dire que je lance une procédure, soit SUB.

        Explication :

        • S : Sync des disques, on met plus rien en cache,
        • U : Unmount, on démonte tout, le plus proprement si possible,
        • B : Tant pis, je suis fini, dans le doute, reboot !
    • [^] # Re: Des touches magiques

      Posté par  (site Web personnel) . Évalué à 1. Dernière modification le 07/05/20 à 16:20.

      Le problème, c'est que sur mon portable "imprécr" et "syst" sont accessibles via la touche "fn". J'ai essayé avec et sans appui sur "fn", mais ça ne donne rien…

      • [^] # Re: Des touches magiques

        Posté par  . Évalué à 1.

        Salut,

        Tu as bien regardé ?

        C'est alt + sysreq + touche

        Donc il faut plein de doigts, mais normalement… :)

        • [^] # Re: Des touches magiques

          Posté par  . Évalué à 3.

          donc chez lui ca donne

          alt+fn+sysreq+ touche

          • [^] # Re: Des touches magiques

            Posté par  . Évalué à 1.

            Salut,

            Oui, peut-être. Mais comme c'est planqué très bas niveau dans le noyau, je ne suis pas certain de fn soit utile.

            Faut essayer :)

            • [^] # Re: Des touches magiques

              Posté par  (site Web personnel) . Évalué à 1.

              Il faut fn : ça marche avec alt+fn+syst+touche.

              J'ai lancé dmesg -w et je vois pour u puis s :

              [ 3309.977985] sysrq: This sysrq operation is disabled.
              [ 3310.696819] sysrq: Emergency Sync
              [ 3310.699638] Emergency Sync complete

              Le b ne provoque aucun affichage et encore moins de reboot. Il a dû être désactivé sur Kubuntu…

              Resterait à tester dans un cas de freeze…

              • [^] # Re: Des touches magiques

                Posté par  . Évalué à 1.

                Salut,

                Ok. bah en cas de freeze, essaye peut-être k plutôt.

                Sans garantie :)

                • [^] # Re: Des touches magiques

                  Posté par  (site Web personnel) . Évalué à 1.

                  Non, elle est désactivée…
                  Merci

                  • [^] # Re: Des touches magiques

                    Posté par  . Évalué à 2.

                    Salut,

                    Ok, vu pour tes autres messages ;)

                    Bon, bin, tu peux aussi recompiler ton noyau pour les réactiver :)

                    Mais franchement, quand je m'amusais en tant qu'étudiant (gnian gnian) avec ça, j'ai toujours trouvé le comportement de k "spécial", disons. Parfois ça me tuait la bonne appli, d'autres fois c'était X et tout ce qui trainait donc au dessus qui était tué. Du coup sub m'allait bien aussi, beaucoup plus fiable pour le résultat ;)

            • [^] # Re: Des touches magiques

              Posté par  . Évalué à 5.

              Attention contrairement aux modificatrices standards (ctrl, alt, shift, kana, super, compose,…), la touche Fn ne produit aucun événement direct sur l'hôte, elle est interne au périphérique.
              C'est en fait le microcontroleur du clavier qui interprète seul les combinaisons sur cette couche modificatrice Fn puis qui envoie le code touche correspondant.

      • [^] # Re: Des touches magiques

        Posté par  . Évalué à 1.

        Salut,

        C'est quoi ta distribution ? Peut-être que ça a été désactivé…

        • [^] # Re: Des touches magiques

          Posté par  (site Web personnel) . Évalué à 1.

          Kubuntu 19.10, voir ce que je viens de poster.

        • [^] # Re: Des touches magiques

          Posté par  (site Web personnel) . Évalué à 3. Dernière modification le 07/05/20 à 16:53.

          Globalement, la plupart des touches ont été désactivées, en particulier le f qui aurait pu être utile pour un freeze, et j'obtiens soit :

          This sysrq operation is disabled.
          

          soit la liste des touches :

          [ 3878.034099] sysrq: HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r) sync(s) show-task-states(t) unmount(u) force-fb(V) show-blocked-tasks(w) dump-ftrace-buffer(z)
          
  • # ssh

    Posté par  . Évalué à 3.

    Selon la situation, tu peux tenter d'aller sur la machine par ssh.
    Ça m'est arrivé cette semaine, Firefox se vautre sur un site moisi (non je n'ai pas réussi à reproduire), machine apparemment figée (à peine le temps de changer de fenêtre au clavier et de lancer un htop pour voir ce qu'il se passe).
    Je tente par ssh et ça se passe très bien, je tue le processus tranquillement.

    • [^] # Re: ssh

      Posté par  . Évalué à 2. Dernière modification le 07/05/20 à 19:07.

      Salut,

      Ça, c'est la solution de riche :)

      Faut déjà avoir deux machines, connaître l'IP de celle qui est freezée…

      Mais oui, elle peut marcher aussi.

      Boh, je n'ai pas à me plaindre, je dois avoir deux machines "personnelles", le nom de domaine pour pouvoir oublier cette petite question d'IP qui redirige bien… et si jamais, au pire, mes deux machines et mon téléphone (plus du rhab' plus utilisé) ne répondaient plus, il reste encore d'autres machines dans le foyer.

      Ce n'est peut-être pas le cas de tout le monde. ;)

    • [^] # Re: ssh

      Posté par  (site Web personnel) . Évalué à 1.

      C'est intéressant à savoir, même s'il faut bien sûr avoir au préalable installé un serveur ssh sur sa machine.

      • [^] # Re: ssh

        Posté par  . Évalué à 3.

        Plus simplement, on peut aussi connecter la deuxième machine avec une liaison série (RS232, USB) ou avec une connexion ethernet point à point (du genre cable RJ45 croisé).
        Si c'était un ordinateur embarqué il y aurait aussi probablement un UART trainant quelque part sur le circuit imprimé.

        • [^] # Re: ssh

          Posté par  (site Web personnel) . Évalué à 1.

          Intéressant, je n'ai jamais essayé de connecter deux PC par USB. Est-ce que tu peux développer ?

          • [^] # Re: ssh

            Posté par  . Évalué à 2.

            Ça ne fonctionne pas directement avec deux PC, ces appareils n'ont habituellement pas de port OTG ou DRD pour fonctionner en tant que slave/client.
            C'est pas pour rien qu'avant l'USB-C la norme avait des connecteurs distincts A et B.
            Donc pour connecter deux PC, il y a un pont USART ou RS232 à réaliser entre les deux ports USB.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.