Pages : 1
#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
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
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
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
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
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.
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
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
See you
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 .
et en plus, parallèlement, je navigue avec firefox
sans problèmes .
alors vive cpu limit .:)
#15 Le 09/08/2006, à 16:29
- mulima
Re : limiter la consommation CPU d'une tache
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 ::
Hors ligne
Pages : 1