Journal Comment limiter l'utilisation du processeur ?

Posté par  .
Étiquettes : aucune
0
9
août
2003
Couc !

J'ai un petit probleme lié è la chaleur actuelle : quand je compile une grosse application mon proc chauffe et se met en protection. Du coup il va à deux à l'heure et je suis forcé d'arreter la compilation le temps qu'il refroidisse.

Je voudrais donc savoir si il existe un moyen de specifier qu'un processus ne doit pas utiliser 100% des ressources cpu, mais seulement 30%, meme si les 60% restant ne sont utilisés par aucun autre processus (dans l'espoir que du coup le proc chauffe moins et puisse tourner en continu).

Luzerne, qui transpire a cote de son ordi, a l'ombre, dans son appart
  • # Re: Comment limiter l'utilisation du processeur ?

    Posté par  . Évalué à 2.

    comme ça, à l'arrache, regarde dans /etc/security/limits.conf et potasse des fois qu'il y ait quelque chose pour limiter l'utilisation du proc

    perso, j'ai abandoné l'idée de recompiler xfree :)
  • # Re: Comment limiter l'utilisation du processeur ?

    Posté par  . Évalué à 4.

    • [^] # Re: Comment limiter l'utilisation du processeur ?

      Posté par  . Évalué à 3.

      ca c est juste pour les processeurs de portable a savoir le speedstep ( intel pentium M ) et le powernow ( athlon/k6 mobile ) Cpufreqd etant le demon qui verifie l utilisation de la machine et augmente/baisse la frequence du proc ( ou plutot sa consommation )
      • [^] # Re: Comment limiter l'utilisation du processeur ?

        Posté par  . Évalué à 1.

        > c est juste pour les processeurs de portable a savoir le speedstep ( intel pentium M ) et le powernow ( athlon/k6 mobile )

        C'est déjà pas mal non ?

        Sinon tu proposes quoi ?

        Ce que je comprends pas c'est qu'on vote [-] à mon commentaire alors que je suis le seule qui proposer quelque chose. C-à-dire diminuer la consommation du cpu alors qu'il n'est pas en attente.

        dlfp c'est n'importe quoi.
        • [^] # Re: Comment limiter l'utilisation du processeur ?

          Posté par  (site web personnel) . Évalué à 0.

          > > c est juste pour les processeurs de portable a savoir le speedstep >( intel pentium M ) et le powernow ( athlon/k6 mobile )
          >
          > C'est déjà pas mal non ?

          bah vu que ca marche que sur c proc ...

          > Ce que je comprends pas c'est qu'on vote [-] à mon commentaire
          > alors que je suis le seule qui proposer quelque chose. C-à-dire
          > diminuer la consommation du cpu alors qu'il n'est pas en attente.
          tu propose quelque chose d'inutilisable c tout
      • [^] # Re: Comment limiter l'utilisation du processeur ?

        Posté par  . Évalué à 2.

        J'oubliais. cpufreq est souvent déjà dans le noyau standard des distributions modernes.
  • # Re: Comment limiter l'utilisation du processeur ?

    Posté par  . Évalué à 3.

    p.e. un petit coup de lower clocking

    Dam
  • # Re: Comment limiter l'utilisation du processeur ?

    Posté par  (site web personnel) . Évalué à 2.

    envoie un signal de renice au processus

    "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

  • # Re: Comment limiter l'utilisation du processeur ?

    Posté par  . Évalué à 2.

    Le sujet a été évoqué il y a quelques jours sur la mailing-list linux-kernel.

    Pour limiter une session en ressources ram et/ou processeur, tu peux utiliser ulimit.

    http://medan.math.ias.edu/cgi-bin/man-cgi?unlimit+1(...)
    • [^] # Re: Comment limiter l'utilisation du processeur ?

      Posté par  . Évalué à 5.

      oui mais non je ne pense pas.

      ulimit te permet de dire "Ce processus ne peut pas consommer plus de XX secondes CPU", si le processus veut s'executer en prennant XX + 1 secondes celui ci est gentillement tue.

      Le probleme reste toujours le meme, puisque s'il n'y a que la compilation sur la machine, celle ci va bouffer 100% CPU jusqu'a ce que cette limite soit atteinte et la boom a plus. Elle ne va pas faire baisser le taux d'occupation du processeur.

      J'ai lu il n'y a pas tres longtemps le nouveau code d'ingo Molnar sur le scheduler du noyau 2.6 et je n'ai pas vu une telle possibilite (je peux aussi l'avoir loupee :-). A priori tant que le processeur n'a rien a faire et qu'il y a une tache dans les files d'attente idle est vire et current est assigne a une vraie tache. Je ne vois donc pas de moyen direct de faire ce qui est demande (liberer le processeur quelque temps).

      La seul solution que je vois c'est de s'amuser avec les signaux SIGSTOP/SIGCONT, mais sur de chose comme make ca peut etre rigolo a implementer :-)

      vala j'espere que j'ai pas trop dit de conneries
  • # Re: Comment limiter l'utilisation du processeur ?

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

    Pourquoi ne pas utiliser la commande nice?

    nice make

    par exemple, lancera le make en n'utilisant que le % d'occupation IDLE du CPU (donc en gros, quand il ne travaille pas.)

    Essaye voir :)
    • [^] # Re: Comment limiter l'utilisation du processeur ?

      Posté par  . Évalué à 10.

      ce que tu dis est absolument faux.

      nice joue sur la priorite d'une tache. On va faire une explication assez simple et assez breve. La plupart des ordinateurs ne disposent que d'une unite de calcul centrale (le processeur) or il arrive frequement que plusieurs processus (un programme en cours d'execution) desirent etre simultanement dans le processeur, ce qui n'est bien sur pas possible. Le role de l'ordonnanceur (scheduler) est de choisir qu'elle tache sera effectivement mise dans le processeur.

      les systemes multitache doivent s'assurer de l'equite d'occupation entre tout les processus et selon le desir de l'administrateur. Ainsi une priorite est affecte a chaque tache et le systeme met dans le processeur la tache qui a la plus haute priorite. Cette prorite est generalement calculee dynamiquement sur des statistique a plus ou moins grande echelle (souvent de l'ordre de 5 secondes) ainsi une tache reclamant beaucoup de CPU se vera penalisee pour favoriser les taches interactives.

      C'est a ce niveau la qu'intervient nice, quand tu fais un "nice -n xx" tu dis : la priorite de ce processus sera celle qu'il devrait avoir _PLUS_ xx. Ceci permet de favoriser ou de defavoriser l'election du processus. Mais cela n'influence en rien le taux d'occupation du processeur. Le but de tout ordonnanceur etant tout de meme d'arrive a accomplir le maximum de tache en un minimum de temps. Tant que la tache nicee pourra s'executer elle le fera (IDLE ne deviendra pas la tache courante) par contre elle se fera preempter si jamais un autre processus desire faire quelque chose.

      Pour te rendre compte de cela fait un top et amuse toi avec nice et des programmes tout simple consitues de for(;;;) ou while(1) et de sleep().

      Si ca en interesse quelqu'un je peux mettre en ligne un rapport que j'ai fait sur l'ordonnancement, il y a notament une tentative d'etude du code source de l'ordo de linux 2.6

      Note : y'a des incorrections techniques mais on va pas pinailler
  • # Re: Comment limiter l'utilisation du processeur ?

    Posté par  . Évalué à 5.

    En cherchant un peu je pense que j'ai ce qu'il te faut :
    http://www.tls-technologies.com/CPU/cpu-intro.html(...)

    Comme je l'ai dis plus haut, sauf avec un bidouillage a coup de signaux je ne connais pas de mechanismes dans le noyau permettant de faire ce que tu veux, ni de code userland.

    Je n'ai pas tester le patch mais il doit rouler. Si ca patch incorrectement dit le moi j'y jettrais un coup d'oeil mais apres un coup d'oeil rapide au fichier ca devrait passer tout seul.

    Autrement j'ai appris en lisant l'archive de lkml qu'une telle fonctionnalite serait presente d'office dans le 2.6, ceci etant a prendre au conditionnel etant donnee que je suis tellement (du tout) la 2.6...
    • [^] # Re: Comment limiter l'utilisation du processeur ?

      Posté par  . Évalué à 1.

      Couc !

      Merci a tous pour vos differentes reponses. Merci surtout a cykl pour ses moultes précisions fortes instructives.

      Merci surtout pour ce dernier lien qui me semble etre LA reponse apropriée a ma question. Je ne savais pas en posant la question qu'il s'agissait d'une fonctionnalité encore absente du noyau linux. Meme si j'avais a l'epoque de l'ecole pas mal joué avec les "fork bomb" pour figer voir faire rebooter les pc des copains ;) je ne m'etais jamais dis qu'avec des "CPU quotas" de telles utilisations perverses du cpu seraient impossibles.

      Le sujet m'a donné bien envie de me pencher sur l'ordonnanceur linux, donc je suis a priori preneur de ton document, faisant sans doute une bonne introduction au code de l'ordonnanceur lui meme (que malgré l'envie je ne prendrai sans doute pas le temps de lire a court terme :).
      Si tu as qq autres liens definitifs sur le sujet de l'ordonnanceur et des limites temps reel qu'il impose au noyau, je suis tres tres interressé. Pas la peine de faire la recherche pour moi sur google, c juste au cas ou tu aurait LE lien a ne surtout pas manqué sous le coude :) (ou qq documents introuvables desormais).
      Je suis aussi preneur de liens sur le fil de discussion précisant la prochaine incorporation de cette fontionnalite dans le noyau linux. Mes recherches sur google groups avec le terme "cpu quotas" m'ayant donné que qq resultats vieillot de 1996, avec parmis les reponses les avis de cox et linus dont je ne sais plus si la fonctionnalité leur paraissait necessaire ou pas.
      • [^] # Re: Comment limiter l'utilisation du processeur ?

        Posté par  . Évalué à 2.

        Pour les fork bomb y'a moyen de les contrer avec les limits actuelle, il suffit de donner le nombre max de processus qu'un utilisateur peu avoir (/etc/login.conf sous FreeBSD par exemple).

        Pour l'ordo tu peux regarder dans http://madchat.org/netadmin(...) ou j'ai une bonne partie des docs que j'ai utilisees (regarde dans les *.kern et kern). Je mettrais mon rapport dans la semaine aussi.

        Une reference est aussi le chapitre 10 du "Noyau linux" d'Oreilly (dispo dans un rep du lien precedent). Pour le temps reel aucune idee, pour l'incorporation j'ai vu ca sur lkml en googlant hier il me semble mais j'ai pas cherche plus, si ce n'ai pas le cas je ferais une request feature et un patch :-))

        A mon avis elle n'est pas "necessaire" mais utile. Les cas ou l'on ne souhaite pas maximiser le taux d'occupation proc sont assez rare et autrement il vaut mieux un bon ordo PS...
    • [^] # Re: Comment limiter l'utilisation du processeur ?

      Posté par  . Évalué à 1.

      Pour les derniers kernels linux, il faut aller voir sur :
      http://www.rshk.co.uk/projects/cpucap.php(...)
      En effet, TLS technologies a vraisemblablement arrété le developpement du patch.....

Suivre le flux des commentaires

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