Jupyter fait "freezer" ma machine

Bonjour
Lorsque je lance certaine fonction mon ordi freeze. Je suis sur windows 10, est-ce vous pensez qu'il existe une solution ?

En regardant sur internet j'ai aperçu deux idées. Il semblerait que ce soit la RAM qui est utilisée à 100%. Donc je peux compiler en ligne colab par exemple. Ou je peux utiliser Docker qui semblerait-il me permet de limiter mon allocation de RAM.

Et vous qu'en pensez-vous ? avez-vous une solution ?
Bien à vous.

Réponses

  • Tu as combien de RAM ?

    Je dis ça, parce que, moi, avant, j'avais 8Go, et je galérais.

    Après, j'ai mis genre 50 euros, pour passer à 16Go, et depuis, je n'ai plus de problèmes.
  • Bonjour marsup

    VOici une photo120926
    RAM.png 14.7K
  • Ok marsup ! Merci pour l'EDIT
  • Le problème, c'est que ceci ne veut pas dire grand-chose :
    Lorsque je lance certain fonction

    Si (au hasard) tu fais du big data, évidemment, il te faut un gros ordinateur avec de la grosse RAM.

    Souvent, les systèmes d'exploitation ont des mécanismes pour éviter les dépassements, mais franchement, d'expérience, ça marche "bof bof".

    (aujourd'hui, ce qui coûte cher, c'est l'immobilier, c'est pas la mémoire vive, ni l'espace de stockage [d'ailleurs, avoir votre système d'exploitation sur un SSD change votre vie pour 50 euros !])
  • Ben y a une fonction qui a fait freezer trois ou quatre fois mon ordinateur aujourd'hui. J'ai envie de mourir.
    def nb_fils(mu,N) :
        """
        mu : loi de de reproduction
        N : N premmière générations
        
        """
        nb_f = np.zeros(N, dtype = int)
        nb_f[0] = 1
        for gen in range(1,N):
            nb_f[gen] = np.sum(mu.rvs(nb_f[gen-1]))
        return nb_f
    
    nb_plot2 = 7
    N2 = 20
    N2A = np.arange(N2)
    p2 = [1/3,1/4,2/3]
    fig2, axs2 = plt.subplots(3,1,figsize = [10,6])
    for i in range(3):
        mu2 = st.geom(p2[i ])
        for plot in range(nb_plot2):
            axs2[i ].plot(N2A, nb_fils(mu2,N2))
            axs2[i ].set_title("m = ".format( (1-p2[i ])/p2[i ]) )
    plt.show()
    
    Attention cadeau empoisonné !
  • @Marsup : Oui je pense que pour le big data il vaut mieux payer un abonnement pour coder en ligne sur un CPU, je sais que Amazon propose ça, c'est plutôt populaire en deep learning.

    Sinon, je suis étonné que ce soit trop demandé à une machine de comprendre qu'un programme utilise trop de RAM d'arrêter les calculs. Ca me semble logique même si le fait que ce ne soit pas le cas, me laisse songer qu'il doit y avoir une raison dernière qui tient la route. Raison que je ne connais pas.
  • il vaut mieux payer un abonnement pour coder en ligne sur un CPU
    Non, je ne suis pas d'accord, et ce n'est pas du tout ce que j'ai dit.

    Je te recommande de t'acheter de la RAM, c'est vraiment pas cher, et tu fais tes calculs sur ta machine si tu peux.

    Par ailleurs, tu peux t'acheter de la puissance de calcul, si c'est pertinent, mais c'est très différent, parce que le CPU, c'est
    1) beaucoup plus cher que la RAM,
    2) on ne peut pas améliorer petit à petit son CPU, contrairement à la RAM !
  • Si tu manques de CPU, ça va prendre longtemps.

    Si tu manques de RAM, ça va `freezer`.

    Ça n'a pas grand chose à voir.
  • Avec les langages interprétés qui cachent une "usine à gaz" pour pouvoir exécuter un programme on a besoin de beaucoup de ressources parfois.
  • Tu as vérifié le fichier de swap de ton ordi?

    PS:
    Mon ordi accepte seulement au plus 4giga bytes de mémoire vive
    J'ai trouvé sur un bout de trottoir un ordi même année que mon ordi actuel mais il accepterait 8giga de mémoire vive selon la documentation lue en ligne. Hélas, il n'avait que 4giga bytes installés et la mémoire vive ddr3 ce n'est pas donné (sans doute aussi chère que la valeur de l'ordi à ce que je peux voir)
  • Mon ordi accepte seulement au plus 4giga bytes de mémoire vive.

    C'est une antiquité, alors. À moins d'être dans une grande difficulté budgétaire, je recommande d'améliorer ton installation, qui doit avoir au moins 10 ou 15 ans. Pour le prix que c'est (400-500 euros boîtier, carte-mère, CPU, alim + 1 barrette de RAM), ce sera un progrès très substantiel de confort d'utilisation !
  • @mini_calli

    Sous Linux, si tu exécutes un programme dont la consommation en RAM augmente à grande vitesse et arrive au point de dépasser ce que la machine peut offrir, des processus se font tuer jusqu'à ce que la RAM ne soit plus saturée (le coupable a de grandes chances d'être le premier et le seul à se faire tuer ; il faudrait voir l'algorithme pour pouvoir être plus précis). Le responsable de ça s'appelle OOM killer (utilise un moteur de recherche).

    Si l'augmentation de consommation de RAM est lente et que tu as beaucoup de swap, c'est une autre affaire : le système devient de plus en plus lent, jusqu'à ce qu'il soit totalement inutilisable en pratique (tant que de la RAM n'est pas libérée). C'est peut-être une situation analogue que tu as expérimentée sous Windows. C'est pour ça que les gens ne conseillent plus, à ma connaissance, de mettre en swap pour Linux deux fois la quantité de RAM disponible (ce qui était la règle usuelle dans les années 2000).
  • Moi, sous Linux, j'ai complètement abandonné l'allocation de swap, sauf pour l'hibernation (même si je n'ai pas compris la différence avec la suspension !!)

    Ce qui me faisait planter, avant, c'était firefox, et maintenant que j'ai 16 Go, c'est bon, même si je suis tout le temps à environ 50% d'utilisés d'après conky,,,

    Le OOM Killer, je ne me rappelle pas m'être retrouvé en situation où il m'ait été utile.
  • @marsup : Effectivement c'est une bonne idée, je pense en acheter. Toutefois cela ne va pas complétement régler mon problème car je finirai toujours par avoir des programmes qui plante ma machine. Ici ce que ça va changer c'est qu'il faut que je pousse plus loin mon programme pour qu'il soit en mesure de terrasser ma machine.

    En fait ce que j'aimerais, peut être c'est un peu naif mais c'est de dire à ma machine tu ne dois pas plus de 50% de RAM pour Jupyter et arrivait à saturation tu coupes tout. Sinon on ordinateur ne répond plus je dois l'éteindre de force, comme un sauvage !
  • C'est quoi le swap ? La description de Brian semble effectivement correspondre à ce que j'ai connu.
  • Je n'ai pas 400-500euros à mettre dans un ordi et puis, ce serait contre ma "religion". Je privilégie toujours de l'occasion à du neuf quand c'est possible*.
    Tous les logiciels, ou presque, font le jeu de l'obsolescence programmée. Z'avez vu le nombre d'images de firefox qui sont en mémoire vive sous Windows? Peut-être que cela améliore la stabilité du programme mais le coût en mémoire vive me semble colossal. Connaissez-vous Pale moon? C'est un fork de Firefox qui me semble moins gourmand en mémoire vive.

    *: le gratuit c'est encore mieux. Il y a des périodes de renouvellement des ordinateurs. En quelques mois, j'ai trouvé un portable sous Windows 7 parfaitement fonctionnel et comme déjà indiqué un ordi de bureau du début des années 2010 qui devait être sous Windows 7 (son ancien proprio a eu la sagesse de conserver le disque dur).

    PS:
    Pour gagner quelques méga octets de mémoire vive j'ai viré les fioritures pour l'affichage des fenêtres de Windows.
  • Mini-Calli:
    En Français, "fichier d'échange".
  • Le swap, c'est une partition, ou (pire) un fichier sur un disque dur qui est utilisé à la place de la mémoire vive quand il n'y en a plus.

    Sauf qu'évidemment, un disque dur, par rapport à la RAM, c'est très très lent, donc en fait, quand ça swappe, c'est la même chose que quand ça a freezé !
  • Agrandir le fichier d'échange peut améliorer les choses mais cela ne fera pas de miracles non plus j'en suis bien d'accord.
  • @marsup

    Oui, je garde mon swap juste pour souffrir quand il est trop utilisé, et « au cas où » j'aurais à lancer un truc légitime qui fait que j'ai besoin d'un peu plus de 8 Go (avec Okular et Firefox, ça arrive...). Firefox est effectivement un gros gorêt.

    À cause de lui, j'ai même installé Monit et écrit cette petite config :
    # https://mmonit.com/monit/documentation/monit.html
    
    set daemon 60
    set httpd unixsocket /home/tralalère/.monit.sock
    
    check process firefox matching ^firefox$
      stop "/bin/sh -c 'killall firefox'"
      if total memory usage > 6.8 GB for 2 cycles then
        exec "/bin/sh -c '/usr/bin/xkbbell; sleep 0.4; /usr/bin/xkbbell; sleep 0.4; /usr/bin/xkbbell'"
          repeat every 1 cycles
      if total memory usage > 6.8 GB for 5 cycles then
        exec "/bin/sh -c 'killall firefox'"
    
    Ça prévient avec des beeps pendant 5 cycles de 60 secondes, et si après ça, le malotru consomme toujours plus de 6,8 GB, il se fait « tuer ». Je crois que mini_calli voudrait un truc de ce genre pour surveiller son programme. Ça doit exister sous Windows...
  • Il existe de tels outils open source de monitoring pour Windows?
  • Fin de Partie, je te rejoins volontiers sur le thème de l'obsolescence programmée.

    Par contre, là, il y a pour de vrai de gros gros progrès techniques, amélioration de la productivité, effet qualité, etc. La mémoire vive a baissé de prix d'un facteur 5 ou 50 depuis 2010.

    Les disques durs SSD aussi.

    Autant le savoir. Après, chacun et chacune vit sa vie, bien sûr !
  • Dès que ton ordi prend de l'âge, le prix de la mémoire vive, si tu n'as pas acheté quand tu le pouvais le maximum de mémoire que peut accepter ton ordi, s'est envolé entretemps car ce type de mémoire n'est plus fabriqué (ou du moins pas en grande quantité).
    Je viens de regarder un catalogue de prix. Près de 290 euros pour deux barrettes de 16giga octets ddr4 ce n'est pas ce que j'appelle "donné". :-D
  • deux barrettes de 16giga
    Pour 32 Go en tout ? Bah peut-être, mais tu n'as pas besoin de tout ça !
  • Marsup: Si tu lis ce que j'ai écrit plus haut tu verras qu'il est judicieux d'acheter autant que peut accepter ton ordi de mémoire vive car si tu comptes le garder un certain temps, pour arriver à suivre le mouvement d'obsolescence programmé qui se bâtit sur les logiciels, de toute façon tu finiras par atteindre la quantité maximum de mémoire vive que peut accepter ton ordinateur mais la différence est que, si tu attends trop longtemps ce sera le coup de massue car le prix de ce type de mémoire se sera envolé car supplanté par un autre type de mémoire que tu ne pourras pas utiliser.
  • Mouais, bof.

    Comme je disais, le prix du matériel informatique s'est effondré depuis deux décennies.

    C'est en grande partie la raison pour laquelle l'INSEE sous-estime considérablement le coût de la vie, car ceci n'est pas balancé contre l'immobilier ni l'énergie. C'est ce qui a donné les gilets jaunes.
  • Marsup:
    Selon moi les gens ne changent pas souvent d'ordi. Il y a eu une période de renouvellement que je peux dater au doigt mouillé vers 2010, et je pense que le début de la décennie actuelle va voir se renouveler le parc d'ordis familiaux. Les gens gardent une dizaine d'années leur ordi probablement. Mais certaines personnes n'ont peut-être plus d'ordinateur, leur smartphone leur suffit. Je ne voyais quasiment plus de carcasses d'ordi traîner dans la rue*, et en quelques mois j'en ai revues (la plupart sont vraiment trop obsolètes) mais il y a de la concurrence pour la collecte avec les chiftirs qui recherchent du cuivre (dans le bloc d'alimentation de l'ordi par exemple) qui te transforment un ordi' fonctionnel en une épave définitivement hors service.

    *: il y a une collecte organisée pour ce type de "déchets" mais elle est tellement ponctuelle dans mon secteur que cela encourage les dépôts sauvages. Il se peut aussi que beaucoup de gens ignorent que les ordis et autres appareils électroniques ne sont pas considérés comme des ordures ménagères.
  • Je pensais qu'il était inutile d'augmenter les barrettes de Ram si la carte mère et son processeur ne pouvait pas gérer une quantité de Ram rajoutée trop importante...
    Je pense que de 8Go à 16 Go pas de problème en principe, mais de pousser à 32Go cela risque d'être inutile à part dépenser du fric inutilement...

    La solution proposée par @brian : modifier le fichier d'échange (swap) sous windows 10 doit être faisable...
    C'est ce que j'ai fait sous linux ... car j'ai viré Windows 10, leurs mises à jour et leurs plantages me gavaient, avec leur antivirus etc etc.

    Sous linux Debian je vais un peu plus vite que j'allais sous Windows et ; j'arrive à 99,8 % de mémoire ram pour un fichier d'échange de 70%.
    Il faut donc bien paramétrer le fichier d'échange en fonction de l'utilité de ses programmes ... @Brian doit bien connaître le problème ...
  • Je ne me suis pas permis de proposer une solution dans ce fil : j'ai simplement décrit des phénomènes que j'ai constatés sous Linux et qui s'expliquent assez facilement. Si ces observations permettent à mini_calli d'améliorer les choses, j'en serai heureux, mais je ne m'avance pas plus que ça.
  • LEG a écrit:
    Je pensais qu'il était inutile d'augmenter les barrettes de Ram si la carte mère et son processeur ne pouvait pas gérer une quantité de Ram rajouter trop importante....

    Oui, c'est inutile. Mais si tu comptes faire durer ton ordi une dizaine d'années, de toute façon tu finiras par rajouter autant de mémoire vive que ton ordinateur est capable d'en gérer*. Alors il vaut mieux ne pas attendre des années pour le faire car autrement le modèle de mémoire accepté par ton ordinateur sera devenu quasiment introuvable donc vendu cher.

    *: en cause, au moins en partie, le phénomène d'obsolescence programmée qui fait que ce type de machine est de plus en plus gourmand en ressources (mémoire vive....)
  • Aujourd'hui j'ai eu le même problème juste en augmentant un paramètre de +1. Donc j'ai attendu et au bout d'un moment ma machine a fini par reprendre conscience. Ce qui m'amène à supposer que l'augmentation de consommation de RAM est lente et que j'ai beaucoup de swap.
  • Comme je disais, le prix du matériel informatique s'est effondré depuis deux décennies.
    J'ai quand même le sentiment que depuis 5 ans, les prix sont repartis à la hausse.
    Et le délire auquel on assiste en ce moment sur les prix des cartes graphiques n'est pas seulement lié au minage.
  • Tu peux surveiller la consommation de mémoire dans Windows : ouvre d’abord le gestionnaire de tâches (Ctrl-Alt-Suppr puis tout en bas). Ensuite, tu choisis d’ordonner les applications en fonction de leur consommation de mémoire vive et tu lances le boulet.
    Algebraic symbols are used when you do not know what you are talking about.
            -- Schnoebelen, Philippe
Connectez-vous ou Inscrivez-vous pour répondre.