web-dev-qa-db-fra.com

kidle_inject utilise la puissance du processeur sans raison apparente

J'utilise Ubuntu 14.04 LTS sur un ordinateur portable i5-3250M, 6 Go RAM Dell Inspiron. Depuis tout ce temps, mon moniteur d’utilisation du processeur a constaté une utilisation élevée de mon processeur (sans utiliser quelque chose de très intensif) et cela conduit à une surchauffe.

J'ai vérifié à partir du moniteur système et au début, il semblait que le problème était dû à ma carte graphique (AMD Radeon 7670M - Carte graphique hybride avec Intel HD 4000). Quoi qu'il en soit, j’ai installé fglrx-updates (le seul qui ait en quelque sorte corrigé le problème de surchauffe - fglrx et xorg n’a pas aidé) et les choses se sont déroulées un peu mieux.

J'ai également installé Intel p-state et thermald. Mettez-le sur le gouverneur Powersave, mais toujours pas de chance. Aussi installé tlp (pas de conflit entre eux).

J'ai essayé de voir si le problème venait de compiz ou d'Adobe-flash. Pas de chance. En outre, HTML5 utilise BEAUCOUP de processeur après un peu et cela retarde tout sur ma composition.

Après avoir fait tout cela, je regardais les résultats de la commande $ top et le coupable semble être kidle_inject. Il utilise comme 50% du processeur à chaque fois. Je ne pouvais pas m'empêcher de remarquer qu'il semblait qu'il y avait quatre modules - kidle_inject/0 à kidle_inject/3.

Alors, quel est ce kidle_inject? Je n'ai pas réussi à trouver quelque chose de concluant sur le sujet. Il semble être allumé lorsque j'utilise quelque chose qui nécessite beaucoup de ressources et qu'il continue de monopoliser mon processeur pendant une minute ou deux après la fin de son utilisation.

Comment puis-je résoudre ce problème afin que ma composition soit enfin utilisable? Je parle d'une température minimale de 70 ° C en utilisation basse performance. Je suis fortement dépendant de linux et je voudrais continuer à utiliser Ubuntu (car je suis tellement habitué à cela et je l’apprécie beaucoup).

- Je dois dire que ce n'est pas la faute de ma machine. Lorsqu'il fonctionne sous Windows 7, il fonctionne à merveille avec des températures basses.

20
Fotis

Comme vous avez activé Intel P-state (via intel_pstate=enable dans GRUB_CMDLINE_LINUX_DEFAULT), vous avez également activé le pilote powerclamp. Le pilote powerclamp s'efforce de maintenir le processeur dans un état de faible consommation afin de réduire la consommation d'énergie et d'éviter autant de refroidissement.

Pour ce faire, il force chaque thread de la CPU à rester inactif pendant un certain temps en injectant un temps d'inactivité. En règle générale, ce montant est de 50%. Les 50% que vous voyez pour chacun des processus kidle_inject ne font pas réellement fonctionner le processeur; au lieu de cela, le processeur ne dit pas de travailler, réduisant ainsi la consommation d'énergie. Notez que l'utilisation globale du processeur n'inclut pas inclure kidle-inject.

Comme @ElderGeek l'a noté, vous pouvez demander au conducteur d'injecter moins de temps mort. Cependant, j'ai essayé ceci et j'ai échoué. Il se peut que le noyau ne le supporte pas encore; il se peut que powerclamp ignore la requête.

18
saiarcot895

Je pense qu'il doit y avoir une sorte de bogue ici, puisque sur mon système, kidle_inject injecte 50% de tous les processeurs, de sorte que lorsque j'exécute un processus à thread unique, il ne récupère que les 50% restants du processeur sur lequel il s'exécute. rmmod intel_powerclamp corrige ce problème.

10
Ketil

Le pilote powerclamp est enregistré dans la couche thermique générique en tant que dispositif de refroidissement. Actuellement, il n’est lié à aucune zone thermique.

Voici un exemple de l'un de mes systèmes.

grep . /sys/class/thermal/cooling_device*/type

/sys/class/thermal/cooling_device0/type:Fan
/sys/class/thermal/cooling_device10/type:LCD
/sys/class/thermal/cooling_device1/type:Fan
/sys/class/thermal/cooling_device2/type:Fan
/sys/class/thermal/cooling_device3/type:Fan
/sys/class/thermal/cooling_device4/type:Fan
/sys/class/thermal/cooling_device5/type:Processor
/sys/class/thermal/cooling_device6/type:Processor
/sys/class/thermal/cooling_device7/type:Processor
/sys/class/thermal/cooling_device8/type:Processor
/sys/class/thermal/cooling_device9/type:intel_powerclamp

Exemple d'utilisation: - Pour injecter 25% de temps mort:

Sudo sh -c "echo 25 > /sys/class/thermal/cooling_device9/cur_state

source: https://www.kernel.org/doc/Documentation/thermal/intel_powerclamp.txt

3
Elder Geek

Si vous regardez la température et les points de déclenchement dans

/sys/class/thermal/thermal_zone0/temp

et

/sys/class/thermal/thermal_zone0/trip_point_0_temp

vous constaterez peut-être (comme je l'ai fait et que je me suis retrouvé à cette question), que votre système fonctionne si chaud qu'il gère la température en injectant des cycles d'inactivité comme @ elder-geek mentionné.

Dans mon cas, c’est le jour le plus chaud de l’année à ce jour et mon ventilateur a échoué, mais mon ordinateur portable survit grâce à cette fonctionnalité.

3
Neale Upstone