kidle_inject использует процессор без видимой причины

Я использую Ubuntu 14.04 LTS на ноутбуке Dell Inspiron i5-3250M, 6 ГБ оперативной памяти. Я все это время замечал на мониторе использования моего процессора, что мой процессор сильно загружен (без использования чего-то очень интенсивного), и это приводит к перегреву.

Я проверил с системного монитора, и сначала мне показалось, что проблема с моей видеокартой (AMD Radeon 7670M - гибридная графика с Intel HD 4000). Во всяком случае, я установил fglrx-updates (единственный, который фактически исправил проблему с перегревом - fglrx и xorg не помогли), и все прошло немного более гладко.

Я также установил Intel P-State и Thermald. Положите его на губернатора PowerSave, но все равно не повезло. Также установлен tlp (нет конфликта между ними).

Попытался выяснить, происходит ли ошибка в compiz или Adobe Flash. Неудачно. Кроме того, HTML5 использует много процессора через некоторое время, и это отстает все на моем компе.

После всего этого я посмотрел на результаты команды $top, и виновник, похоже, kidle_inject. Он использует как 50% процессора каждый раз. Я не мог не заметить, что казалось, что у него было четыре модуля - от kidle_inject/0 до kidle_inject/3.

Итак, что это за kidle_inject? Я не смог найти что-то убедительное по этому вопросу. Кажется, это происходит, когда я использую что-то ресурсоемкое, и оно продолжает загружать мой процессор в течение минуты или двух после прекращения использования.

Как я могу это исправить, чтобы мой комп пригодился для использования наконец? Я говорю о минимальной температуре 70C при низкоэффективном использовании. Я сильно зависим от Linux, и я хотел бы продолжать использовать Ubuntu (так как я привык к этому, и я полюбил его).

- Должен сказать, что это не вина моей машины. Когда он работает на Windows 7, он работает фантастически при низких температурах.

4 ответа

Потому что вы включили Intel P-состояние (через intel_pstate=enable в GRUB_CMDLINE_LINUX_DEFAULT), вы также включили драйвер powerclamp. Драйвер powerclamp старается поддерживать процессор в состоянии низкого энергопотребления, чтобы снизить энергопотребление и не требовать такого большого охлаждения.

Чтобы сделать это, он заставляет каждый поток в CPU некоторое время простаивать, вводя время простоя. Как правило, эта сумма составляет 50%. 50%, которые вы видите для каждого из kidle_inject процессы на самом деле не заставляют процессор работать; скорее, он говорит процессору не выполнять работу, что снижает энергопотребление. Обратите внимание, что общее использование процессора не включает kidle-inject,

Как заметил @ElderGeek, вы можете сказать водителю вводить меньшее количество времени простоя. Однако я попробовал это, и безуспешно. Возможно, ядро ​​еще не поддерживает его; может случиться так, что powerclamp игнорирует запрос.

Я думаю, что здесь должна быть какая-то ошибка, так как в моей системе kidle_inject внедряет 50% во все процессоры, так что, когда я запускаю однопоточный процесс, он получает только оставшиеся 50% процессора, на котором он работает. rmmod intel_powerclamp исправляет это.

Если вы посмотрите на температуру и точки срабатывания в

/sys/class/thermal/thermal_zone0/temp

а также

/sys/class/thermal/thermal_zone0/trip_point_0_temp

вы можете обнаружить (как я это сделал, а потом обнаружил, что задаюсь этим вопросом), что ваша система работает так сильно, что управляет температурой, вводя циклы холостого хода, как упомянул Elder Geek.

В моем случае это самый жаркий день в году, и мой вентилятор вышел из строя, но мой ноутбук выживает благодаря этой функции.

Драйвер powerclamp регистрируется в общем тепловом слое как охлаждающее устройство. В настоящее время он не связан ни с какими термальными зонами.

Вот пример из одной из моих систем.

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

Пример использования: - Чтобы ввести 25% времени простоя:

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

источник: https://www.kernel.org/doc/Documentation/thermal/intel_powerclamp.txt

Другие вопросы по тегам