Contenu | Rechercher | Menus

Annonce

DVD, clés USB et t-shirts Ubuntu-fr disponibles sur la boutique En Vente Libre

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/04/2006, à 21:04

mulima

limiter la consommation CPU d'une tache

Bonjour a tous

Connaissez vous une astuce qui permette de limiter la consommation d'une tache en % de charge CPU

Par exemple : je souhaite encoder une video avec ffmpeg qui ne consommerai que 20% de la charge CPU; peut importe le temps qu'il mettes ;-)

nice et ulimit ne font pas ca, helas ...

Merci pour vos lumieres ;-)

Hors ligne

#2 Le 08/04/2006, à 21:19

Ohax

Re : limiter la consommation CPU d'une tache

Ca m'interresserait aussi big_smile

Hors ligne

#3 Le 08/04/2006, à 23:39

abetsic

Re : limiter la consommation CPU d'une tache

J'ai pas la réponse précise à la question, mais je sais de quel côté ça se passe : ulimit
c'est une commande de bash (à vérifier) qui permet de limiter divers parametres d'un processus fils du shell dans lequel tu auras fait ton ulimit.
On peut limiter la taille de la pile, le temps d'execution, la taille des données et plusieurs autres choses...

sinon il y a aussi "nice" qui permet de définir la priorité d'un processus, la niceness. C'est une valeur comprise entre -20 et +19, plus la valeur est petite, plus le processus est prioritaire, seul root peut donner des valeurs négatives.

man bash pour l'utilisation de ulimit
man nice pour nice.

Hors ligne

#4 Le 09/04/2006, à 00:13

tylhdar

Re : limiter la consommation CPU d'une tache

gnome-system-monitor
clic droit>modifier la priorité


un matériel non compatible linux est un matériel défectueux
ubuntu 10.4 sur pc1 ; debian squeeze sur pc2

Hors ligne

#5 Le 09/04/2006, à 00:20

Ohax

Re : limiter la consommation CPU d'une tache

tylhdar a écrit :

gnome-system-monitor
clic droit>modifier la priorité

La priorité ne permet pas de régler ceci avec exactitude.

Elle ne permet pas non plus d'allouer un cota pour une tache précise.

Hors ligne

#6 Le 09/04/2006, à 11:57

mulima

Re : limiter la consommation CPU d'une tache

je vous remercie pour vos posts, neanmoins je n'ai pas du etre assez clair hmm

nice et ulimit ne font pas ca, helas ...

j'ai manisé ces commandes qui n'agissent pas sur le quota CPU ...

si une commande prend 95% du proc sans etre nicée, elle genera les autres taches


si je la nice, elle continura a prendre tout la charge CPU dispo, mais en genant moins les autres taches... ca n'est pas ce que je cherche

et ulimit fait des choses plsu ou moins similaires mais n'agit pas sur le quota CPU

google me renvoi vers le CPU caping mais je n'ai rien trouvé d'ubuntuisable roll

Hors ligne

#7 Le 10/04/2006, à 15:59

thom

Re : limiter la consommation CPU d'une tache

Je ne vois pas trop le genre d'interet de cette manip.. mais tu peux essayer de limiter la  frequence de ton cpu...


-> Ubuntu on a Sony Vaio VNG-FS115B
-> Wificonfig is a little script aimed to ease the switching between networks, for people who have 2 network cards : a wired one and a wireless one.

Hors ligne

#8 Le 10/04/2006, à 22:35

yugo

Re : limiter la consommation CPU d'une tache

Si tu réduit la proriété au minimum, tes autres taches ne seront pas génées. Ca devrait plutot bien marcher.
Pourquoi vouloir fixer une limite à 20% du CPU?


Dans la vie il y a 3 sortes d'imbéciles: ceux qui doutent de tout et ceux qui doutent de rien

Hors ligne

#9 Le 10/04/2006, à 23:39

mulima

Re : limiter la consommation CPU d'une tache

par exemple par ce que je suis sous Xgl :-)

precisement j'utilise une carte satellite et mplayer et il a comme des "lourdeurs" avec ma config en fullscreen hmm
et même en nicant des taches gourmandes en ressources j'ai des sacades desagreables .. et des désynchro son/images

la solution via le forum officiel est ici
http://setiathome.berkeley.edu/forum_th … p?id=15977

apres correction du code j'obitent une application qui fait parfaitement ce que j'attendais

limiter la consommation cpu au % pres .. royal !!!!!

ci dessous le code corrigé ;-)

//cpulimit.c
/**
* Simple program to limit the cpu usage of a process
*
* Author: Angelo Marletta (marlonx80@hotmail.com)
*/

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <sys/time.h>
#include <unistd.h>
#include <sys/types.h>
#include <signal.h>
#include <sys/resource.h>

//pid of the controlled process
int pid;

//SIGINT signal handler
void quit(int sig) {
    //let the process continue if it's stopped
    kill(pid,SIGCONT);
    exit(0);
}

int main(int argc, char **argv) {

    if (argc!=3) {
        fprintf(stderr,"Usage: %s {pid} {max cpu percentage}\n",argv[0]);
        exit(1);
    }
    pid=atoi(argv[1]);
    int limit=atoi(argv[2]);
    if (limit>100) {
        fprintf(stderr,"limit must be in the range 0-100\n");
        exit(1);
    }
    //if possible renice this process, so it has more responsiveness
    if (setpriority(PRIO_PROCESS,getpid(),-20)!=0) {
        printf("Warning: cannot renice.\nTo work better you should run this program as root.\n");
    }
    signal(SIGINT,quit);

    //time quantum in microseconds
    int period=100000;
    struct timespec twork,tsleep; //time to work, and time to sleep
    twork.tv_sec=0;
    twork.tv_nsec=period*limit*10;
    tsleep.tv_sec=0;
    tsleep.tv_nsec=period*(100-limit)*10;

    while(1) {
        if (kill(pid,SIGSTOP)!=0) break;
        nanosleep(&tsleep,NULL);
        if (kill(pid,SIGCONT)!=0) break;
        nanosleep(&twork,NULL);
    }

    perror("kill()");
    exit(1);
}

pour compiler

gcc -o cpulimit cpulimit.c

utilisation

cpulimit {seti pid} {cpu limit}

Bon ca n'est pas une veritable gestion par quotas et c'est un peu bourrin a coup de SIGSTOP SICONT mais ca donne le resulta escompté

Merci a "Monster_user" sur http://www.ubuntuforums.org/

A++ all :-)

Dernière modification par mulima (Le 10/04/2006, à 23:41)

Hors ligne

#10 Le 13/05/2006, à 18:27

ShaLouZa

Re : limiter la consommation CPU d'une tache

Merci pour l'astuce, ça va m'être utile pour éviter de faire fondre mon portable quand j'encode. big_smile

Pour les lents à la détente comme moi : quand vous utilisez la commande, ne mettez pas les {}. ^^

Vous récupérez le PID du processus à limiter avec un «top» ou le moniteur système, et vous entrez une commande comme celle-ci par exemple pour limiter le processus 345 à 67% du cpu :

sudo cpulimit 345 67

Il veut mieux lancer le programme en root pour qu'il puisse accéder à la gestion du nice sans problème apparemment.


«D'abord ils vous ignorent, puis ils rient de vous, puis ils vous combattent, puis vous gagnez.» Gandhi

Hors ligne

#11 Le 17/05/2006, à 10:09

azmaeve

Re : limiter la consommation CPU d'une tache

Merci beaucoup ça marche pas mal ça fait longtemp que je cherchais quelque chose comme ça.
Selon la console système les processus en question dépassent de 1% parfois mais ça doit etre une question d'arrondi.

Dernière modification par azmaeve (Le 17/05/2006, à 10:09)

Hors ligne

#12 Le 07/06/2006, à 11:39

vlemquov

Re : limiter la consommation CPU d'une tache

Cool cela est possible!
Par contre je n'arrive pas à faire les manip...
J'ai Dapper avec le build-essential notamment pour compiler,

Je crée un fichier cpulimit.c, je lance la compilation avec

gcc -o cpulimit cpulimit.c

mais il me met une erreur (je ne peux pas poster laquelle ici car je n'ai pas mon pc sous les yeux)

Mais est-ce que dans la démarche j'ai juste ou j'ai fait une erreur?

Merci
smile

Hors ligne

#13 Le 23/06/2006, à 15:06

Tribute2U

Re : limiter la consommation CPU d'une tache

Sinon il y a egalement un programme en C qui fait cela tres bien, vous pouvez le trouver ici : http://marlon80.interfree.it/cpulimit/
Je l'utilise et il marche nickel cool

See you wink

Dernière modification par Tribute2U (Le 23/06/2006, à 15:07)


"Seul l'ignorant se fâche, le sage comprend."
"Autrefois, on s'instruisait pour soi-même. Aujourd'hui, c'est pour en imposer aux autres."

Hors ligne

#14 Le 30/07/2006, à 12:57

jmecodol

Re : limiter la consommation CPU d'une tache

j'utilise aussi cpu limit sur
http://marlon80.interfree.it/cpulimit/
depuis ce matin,

et enffffffffin je peut encoder des dvd
sur mon vieux portable tongue .

et en plus, parallèlement, je navigue avec firefox
sans problèmes big_smile .

alors vive cpu limit .
smile:)

#15 Le 09/08/2006, à 16:29

mulima

Re : limiter la consommation CPU d'une tache

ShaLouZa a écrit :

Vous récupérez le PID du processus à limiter avec un «top» ou le moniteur système, et vous entrez une commande comme celle-ci par exemple pour limiter le processus 345 à 67% du cpu :

sudo cpulimit 345 67

.

une autre methode ....

sudo cpulimit `pidof lenomdusoft` 67

le cpulimit auquel vous faites references ci dessus me semble bien provenir du meme auteur :-)
a++

Dernière modification par mulima (Le 09/08/2006, à 16:32)

Hors ligne

#16 Le 26/02/2007, à 11:52

deltamoins

Re : limiter la consommation CPU d'une tache

Super ce programme cpulimit !!!
En fait j'ai posté un message pour demandé comment empécher beagled-helper (un processus qui tourne quand on utilise Beale) de prendre 100 % du CPU et voilà j'ai la réponse ça marche nickel et mon ventilo ne souffle plus comme un malade !
Merci donc Mulima !

Hors ligne

#17 Le 09/11/2008, à 16:18

Aldian

Re : limiter la consommation CPU d'une tache

Ceci "setpriority(PRIO_PROCESS,getpid(),-20" me parait vraiment archi bourrin. Ca veut dire sauf erreur de ma part que de tous les process tournant sur le système, celui ci devient le plus prioritaire et que si pour une raison ou une autre, ça plante, l'ordi plante. Sachant que la majoité des process a une priorité de 0, une priorité de -2 suffirait amplement, non?

Hors ligne

#18 Le 14/01/2009, à 22:55

Pacifick_FR42

Re : limiter la consommation CPU d'une tache

ça marche au poil cpulimit, compiler, copier dans /bin et hop ! toujours sous la main !
Bravo :: smile

Hors ligne