10 octobre 2012

Limiter l'usage du CPU d'une application sous Mac OsX (et empécher le ventilateur de souffler !)

Je désespérais un peu avec mon Macbook Pro du début 2011 qui a toujours soufflé à fond (ventilateur) pour un oui pour un non. En fait pas vraiment pour un oui ou pour un non mais pour 2 applications qui prennent souvent 100% du CPU : Dropbox et Flash sous Firefox comme sur Chrome (pas sur Safari par contre). Cette discussion résume bien le problème et le relatif manque de solution. Celle là donne d'autres solutions que la mienne.

Pour regarder une vidéo sur Youtube, cela fait longtemps que j'ai pris l'habitude de passer sur Safari. Par contre je ne peux pas grand chose contre Dropbox quand il lance une synchronosation de mes fichiers de temps en temps. Seule façon de faire, mettre la synchronisation en pause et la remettre en marche quand je ne suis plus devant l'ordi (pas souvent car dans ce cas je le ferme...).

J'ai enfin trouvé une solution que j'essaye depuis aujourd'hui : limiter le CPU utilisable par Dropbox (ou toute autre application). En cherchant un peu on trouve CpuThrottle et différents Cpulimit (comme celui là par exemple).

J'ai testé Cpulimit et pour l'instant, cela résoud totalement mon problème de chauffe : Dropbox est bien limité à 10% au lieu de 100% (j'ai 200% puisque j'ai un double coeur sur mon Macbook).

Voila comment je m'y suis pris :



> Mon installation (expliquée par son auteur ici) :

  • J'ai récupéré le zip (bouton ZIP, en haut) sur la page de Cpulimit et je l'ai dézippé directement dans mon  dossier Downloads (en cliquant sur le zip). 
  • J'ai lancé un terminal (applications>utilitaires>terminal) et je suis allé dans le dossier créé en ligne de commande (cd Downloads/opsengine-cpulimit). 
  • J'ai ensuite tapé make (toujours dans le terminal)
  • Je suis retourné dans le finder pour copier le fichier créé (par le make) nommé cpulimit (dans le dossier Downloads/opsengine-cpulimit/src) dans le dossier /usr/bin (faire CMD + C sur cpulimit, puis dans le finder, menu aller>aller à, taper /usr/bin)
> Utilisation :

  • il suffit ensuite d'ouvrir un terminal et de limiter l'usage du process (et de ses enfants) que l'on souhaite. Dans mon cas par exemple, j'ai limité le process de Dropbox à 10% en tapant la ligne suivante :
    • cpulimit -p 431 -l 10 (p pour process, l pour limit)
    • pour obtenir le numéro du process, personnellement j'utilise le moniteur d'activité (applications>utilitaires>moniteur d'activités) car c'est lui qui me montre quelles applications consomment tout mon CPU (je trie les applications qui consomment le plus en cliquant sur la colonne "%processeur")
    • si on veut automatiser tout ça, on peut même faire un petit script (lalala.command) contenant
      • toto=$(fuser leCheminDeLApplication)
      • cpulimit -l 10 -p $toto &
    • dans mon exemple avec Dropbox, cela fait :
      • toto=$(fuser /Applications/Dropbox.app/Contents/MacOS/Dropbox)
      • cpulimit -l 10 -p $toto &
Tout ça peut sembler un peu geek, mais je vous assure que c'est très simple et que je savoure le silence depuis que le ventilo de mon Macbook s'est enfin tu !

12 commentaires:

Anonyme a dit…

J'hésitais beaucoup à employer ce type de méthode, je préfère les applications toute prêtes en générale. Mais grâce à ta traduction et présentation pas à pas, je me suis laissé convaincre, merci! Dans mon cas, c'est plus pour limiter la chauffe et donc le vieillissement de mon processeur durant de longues heures de conversion vidéos. Dès que j'aurai installé le module de ligne de commandes de XCode, je pourrais utiliser la commande make et vérifier que ça marche sous MOuntain Lion.

Anonyme a dit…

C'est encore moi avec mes conevrsions vidéos! Je confirme, ça marche parfaitement sous Mountain Lion! Et c'est somme toute assez amusant de taper ses commandes dans le terminal au lieu de passer par une interface graphique, finalement. Encore merci!

Stephane ROUILLY a dit…

Oui, moi aussi j'ai mis du temps à me décider à employer cette méthode, mais maintenant je ne peux plus m'en passer !

Anonyme a dit…

Bonjour,
J'essaye votre technique mais lors de l'étape de la cmd "make" j'ai un message me disant :

-bash: make: command not found

J'essaye de regarder sur les forums et autres (bien que aucun autre site ne parle de cpulimit sur osx ...), mais je ne comprend pas pourquoi je n'y arrive pas.

Savez vous pourquoi svp ? Merci.

Anonyme a dit…
Ce commentaire a été supprimé par un administrateur du blog.
Anonyme a dit…

Hi, can you send me instal instruction in english?

fazolejh@gmail.com

Thank you very much.

Stephane ROUILLY a dit…

The install instruction can be found in english here : http://cpulimit.sourceforge.net/.

Enjoy !

Anonyme a dit…

Thank you for the tutorial, the program works very well.

Anonyme a dit…

Bonjour Monsieur, votre tutoriel m'intéresse beaucoup, mais j'ai des problèmes de mise en œuvre. Sur le site auquel vous renvoyez, faut il télécharger cpulimit master, ou cpulimit multiplatform ? ou encore autre chose ? Je n'ai pas réussi à obtenir, dans mon dossier downloads, le dossier cpulimit tout court dont vous parlez.

Starcrouz a dit…

@anonyme : Le zip s'appelle cpulimit-master.zip (obtenu en cliquant sur le bouton ZIP).

C'est quand on fait le make, qu'un programme nommé cpulimit tout court apparait

Anonyme a dit…

Merci pour votre réponse d'hier. Je ne sais pas si vous accepterez d'aider quelqu'un qui ne connaît pas Linux. Je ne dois quand même pas être le seul dans ce cas à vouloir limiter les ardeurs de Handbrake par exemple. Voici ce que j'obtiens avec les premières lignes de programmation :

new-host-3:~ macbookpro$ cd Downloads/cpulimit-master
new-host-3:cpulimit-master macbookpro$ # make
new-host-3:cpulimit-master macbookpro$

Est-ce correct ? Sachez que cela ne me crée pas un fichier cpulimit dans le dossier src ...

Merci d'avance pour votre aide.

Anonyme a dit…

C'est encore moi. J'ai réussi ce dont votre premier interlocuteur aux conversions vidéo parlait brièvement et avait déjà réussi, ainsi que d'autres personnes d'ailleurs : appliquer votre procédure à Mountain Lion.
J'ai téléchargé Xcode (très long), puis Xcode une fois ouvert, j'ai suivi Préférences>Downloads>Components>Command Line Tools INSTALL
Après l'installation des outils de la line de commande, on peut quitter Xcode, qui a joué son rôle, et suivre votre tutoriel dans Terminal, la commande make étant devenue active (ne rien taper devant le mot make, par contre à ce que je croyais).
Bien entendu, comme vous le disiez précédemment, votre opsengine/cpulimit est maintenant à remplacer par cpulimit-master
Merci beaucoup pour cette page de tutoriel et de blog.