Forum Linux.général Limitation de temps CPU l'un processus

Posté par (page perso) .
Tags : aucun
0
30
mai
2008
Salut à tous,

Je cherche s'il est possible de limiter l'utilisation de CPU (et pourquoi pas, de la mémoire) de certains processus sur ma machine, et ce, de manière permanente.
Il existe bien cpulimit, mais je veux plutôt un truc comme un ensemble de régles permanentes qui s'activent tout seules. Un peu comme dans /etc/security/limits.conf
Exemple concret :
J'ai nautilus et thunar qui s'amuse régulièrement à prendre 80% du cpu pour rien. J'imagine écrire une règle dans un fichier, style "si un processus 'nautilus' existe/apparait, le limiter à 10% du cpu".

Je suppose qu'il y a des choses qui existent, mais je n'ai pas trouvé...
  • # ulimit et consors.

    Posté par . Évalué à 2.

    Voir du côté de ulimit, nice et éventuellement ionice.

    Bon courage.
  • # cpulimit

    Posté par . Évalué à 3.

    cpulimit est dorénavant intégré dans pas mal de distro par défaut.

    Sur mdv 2008.1 c est le cas :
    [user@machine ~]$ urpmq -i cpulimit
    Name : cpulimit
    Version : 1.1
    Release : 1mdv2008.1
    Group : Monitoring
    Size : 10064 Architecture: i586
    Source RPM : cpulimit-1.1-1mdv2008.1.src.rpm
    URL : http://cpulimit.sourceforge.net/
    Summary : CPU Usage Limiter
    Description :
    cpulimit is a simple program that attempts to limit the cpu usage of a
    process (expressed in percentage, not in cpu time). This is useful to
    control batch jobs, when you don't want they eat too much cpu. It does
    not act on the nice value or other scheduling priority stuff, but on
    the real cpu usage. Also, it is able to adapt itself to the overall
    system load, dynamically and quickly.
    • [^] # Re: cpulimit

      Posté par (page perso) . Évalué à 1.

      C'est justement ce que je veux éviter : Ces outils nécessitent à chaque fois une action spécifique de l'utilisateur. Je cherche plus un truc comme un demon qui se configure une fois pour toute...
      J'ai l'impression qu'il faut regarder dans des trucs style grsecurity, mais c'est un peu l'artillerie lourde pour pas grand-chose.
      • [^] # Re: cpulimit

        Posté par . Évalué à 1.

        Pourquoi vouloir limiter l'utilisation CPU d'un processus ? Pour ne pas gêner les autres processus ? Il y a nice(1). Pour ne pas faire souffler le ventilateur ou économiser la batterie ? D'après une dépêche DLFP[1], des fois, il vaut mieux ne pas limiter le CPU.

        [1] https://linuxfr.org/2008/05/16/24093.html
        • [^] # nice renice

          Posté par . Évalué à 2.

          Oui, tu dois juste utiliser nice ou écrire un simple daemon en shell par exemple qui fera un renice des process qui t'embettent.
          Avoir un process consommant 100% CPU n'a rien d'alarmant/génant tant qu'il ne pénalise pas les autres process de la machine.
          Quand je convertit une video en DIVX, je descend la priorité de mencoder au max pour que la machine et KDE reste réactifs ce qui ne veut pas dire que mencoder ne tournera jamais à 100%. Si je ne fais rien sur la machine, le processeur n'a quasiment rien à faire pour s'occuper de moi et donc mencoder "prend" 100% CPU. Dés que je tape au clavier ou je bouge une fenêtre, mencoder est le premier à libérer du CPU.
        • [^] # Re: cpulimit

          Posté par (page perso) . Évalué à 2.

          La dépêche dit que quand on a un calcul à faire faire au CPU, il est préférable de le faire le plus vite possible. Ici, on est visiblement dans un cas où on aimerait limiter l'accès au cpu de processus qui font des calculs que l'on juge inutiles (genre une thread nautilus a planté ou un truc comme ça), et qui empêchent le cpu de se mettre en sommeil ACPI.

          Après, il serait intéressant de savoir pourquoi ces programmes ont un tel comportement.
          • [^] # Re: cpulimit

            Posté par . Évalué à 5.

            >> Après, il serait intéressant de savoir pourquoi ces programmes ont un tel comportement.

            Parce que ce sont des programmes GNOME ?
      • [^] # Re: cpulimit

        Posté par (page perso) . Évalué à 2.

        Un package comme ça ?

        jylenhof@newportable:~$ apt-cache show reniced
        Package: reniced
        Priority: optional
        Section: utils
        Installed-Size: 100
        Maintainer: Christian Garbs <debian@cgarbs.de>
        Architecture: all
        Version: 1.17-1
        Depends: libbsd-resource-perl, perl
        Filename: pool/main/r/reniced/reniced_1.17-1_all.deb
        Size: 11316
        MD5sum: 963ca7f99ddb9673a6445c8130019c26
        SHA1: ff2d3640c88675e70f8dfdf39a32c477e6563b5b
        SHA256: ec232383ef6558c407efe0eb818738128701ec76f2769d4bd8148db25ec716cc
        Description: renice running processes based on regular expressions
        reniced takes a list of regular expressions, looks for processes
        matching them and renices the processes to given values.
        .
        Instead of editing the scripts in /etc/init.d to give daemons the
        nicelevel you want (and get prompted at every package update because
        these files are conffiles) you can just run reniced once a day.
        .
        Homepage: http://www.cgarbs.de/stuff.en.html
        Tag: admin::automation, interface::daemon, role::program, scope::utility, works-with::software:running

        jylenhof@newportable:~$
        • [^] # Re: cpulimit

          Posté par (page perso) . Évalué à 1.

          C'est pas encore ça, mais on approche terriblement. Faut que je creuse cette voie. Je doit pouvoir en faire quelque-chose.
          Merci beaucoup.

Suivre le flux des commentaires

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