Всем привет.
Не давно на один слегка модифицированный ноут ASUS K43SJ установил Ubuntu 14.04 LTS и столкнулся с очень странной проблемой.
Дело в том, что спустя некоторое время работы он начинает чрезвычайно сильно лагать. Ну естественно я начал разбираться и заметил, что реальная частота процессора сильно проседает. Я очень долго, целый месяц наверное ковырялся с проблемой , гуглил и попытаюсь расписать что я обнаружил.
Во-первых следует определить два фактических режима работы: обычный - когда комп работает совершенно нормально и адекватно и тормозной - когда начинает происходить эта проблема.
Этот самый тормозной режим возникает совершенно спонтанно, без видимых причин. Может даже в простое. Может сразу во время бута системы, что сразу заметно по скорости загрузки, а может через час-два производительной работы. Может пройти через 5 мин, а может мешать работать несколько часов до перезагрузки. При этом частота процессора падает порой до ужасающе низких значений.
Что касается субъекта, процессор - Intel(R) Core(TM) i3-2310M CPU @ 2.10GHz
На ноуте стоит также винда 7, в которой всё ОК и похожих проблем не наблюдается. Даже в игры можно играть, ноут относительно греется, не умирает.
Сначала я подумал, что это не явные проблемы с перегревом. Начал мониторить температуру - с этим всё ОК. Температура редко подымается выше 75 градусов и обычно держится на 70, а возникновение проблемы не коррелирует с временем нагрева и нагрузками, может возникать даже сразу после старта холодного ноута, когда температура ядер даже не выше 50. В винде активное охлаждение начинает активно дуть только после 80. Тоже самое и в Ubuntu. Когда экспериментировал, умышленно закрывал охлаждение. Действительно, начинает дуть после 80, что также согласуется с выводом sensors (там «высокий» отмечен на 80 и «критический» на 85), но не кореллирует с возникновением проблемы.
Затем я начал ковыряться с governor'ами. По-умолчанию система использует для управления частотой intel_pstate, в котором нет governor'а userspace, по этому установить свою частоту не возможно. Есть powersave и performance, их переключение ничего не меняет.
Я пробовал использовать вместо него acpi-cpufreq путем добавления intel_pstate=disable к GRUB_CMDLINE_LINUX_DEFAULT в GRUB. С acpi-cpufreq проблема всё еще есть и её возникновение не меняется, однако всё же чуть лучше: с intel_pstate частота может проседать до невероятных 100MHz (!), в то время как с acpi-cpufreq она никогда не падает ниже 800MHz, а иногда не ниже 1200MHz. Опять же, переключение по conservative, ondemand, powersave, performance ничего не даёт. В userspace частота не ставится выше псевдо-макисмальной.
Я пробовал дёргать модуль ядра intel_powerclamp с обоими драйверами и это ничего не дало.
Я пробовал дёргать пакет intel-microcode и пробовал разные microcode файлики с сайта Intel, но не похоже, что бы оно влияло.
Находил какой-то странный баг с режимами питания, и что баг исправляется перевтыканием кабеля питания. Пробовал и это, ничего не происходит. К слову, в ноуте очень убитая батарея: 14 Втч от исходных 56 Втч. Пробовал работать без батареи: проблема возникает.
Что касается dmesg, то там ничего подозрительного.
Гуглил. Подобные проблемы есть много где, на разных форумах. Но там либо нет ответа или решения, либо всё упирается в перегрев или ограничения оставленые BIOS'ом. Последнее, похоже, не имеет отношения, т.к. всегда указано 2100000, не зависимо от режима тормозов.
Также я грузился с флешки, с которой устанавливал систему и там эту проблему не наблюдал. Но я не экспериментировал с этим особо, так что не могу быть уверен.
Вот пара листингов cpufreq-info, обратите внимание на несоответствие hardware limits и current policy:
Тормозной режим, драйвер intel:
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
driver: intel_pstate
CPUs which run at the same hardware frequency: 0
CPUs which need to have their frequency coordinated by software: 0
maximum transition latency: 0.97 ms.
hardware limits: 800 MHz - 2.10 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 800 MHz and 840 MHz.
The governor "performance" may decide which speed to use
within this range.
current CPU frequency is 127 MHz.
analyzing CPU 1:
driver: intel_pstate
CPUs which run at the same hardware frequency: 1
CPUs which need to have their frequency coordinated by software: 1
maximum transition latency: 0.97 ms.
hardware limits: 800 MHz - 2.10 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 800 MHz and 840 MHz.
The governor "performance" may decide which speed to use
within this range.
current CPU frequency is 127 MHz.
analyzing CPU 2:
driver: intel_pstate
CPUs which run at the same hardware frequency: 2
CPUs which need to have their frequency coordinated by software: 2
maximum transition latency: 0.97 ms.
hardware limits: 800 MHz - 2.10 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 800 MHz and 840 MHz.
The governor "performance" may decide which speed to use
within this range.
current CPU frequency is 111 MHz.
analyzing CPU 3:
driver: intel_pstate
CPUs which run at the same hardware frequency: 3
CPUs which need to have their frequency coordinated by software: 3
maximum transition latency: 0.97 ms.
hardware limits: 800 MHz - 2.10 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 800 MHz and 840 MHz.
The governor "performance" may decide which speed to use
within this range.
current CPU frequency is 111 MHz.
Драйвер acpi-cpufreq, тормоза в 1200MHz:
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
driver: acpi-cpufreq
CPUs which run at the same hardware frequency: 0
CPUs which need to have their frequency coordinated by software: 0
maximum transition latency: 10.0 us.
hardware limits: 800 MHz - 2.10 GHz
available frequency steps: 2.10 GHz, 2.00 GHz, 1.90 GHz, 1.80 GHz, 1.70 GHz, 1.60 GHz, 1.50 GHz, 1.40 GHz, 1.30 GHz, 1.20 GHz, 1.10 GHz, 1000 MHz, 900 MHz, 800 MHz
available cpufreq governors: conservative, ondemand, userspace, powersave, performance
current policy: frequency should be within 800 MHz and 1.20 GHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency is 900 MHz.
cpufreq stats: 2.10 GHz:19,99%, 2.00 GHz:2,79%, 1.90 GHz:1,87%, 1.80 GHz:2,24%, 1.70 GHz:0,92%, 1.60 GHz:2,25%, 1.50 GHz:0,68%, 1.40 GHz:0,50%, 1.30 GHz:0,76%, 1.20 GHz:25,57%, 1.10 GHz:2,51%, 1000 MHz:3,66%, 900 MHz:9,43%, 800 MHz:26,83% (1732)
analyzing CPU 1:
driver: acpi-cpufreq
CPUs which run at the same hardware frequency: 1
CPUs which need to have their frequency coordinated by software: 1
maximum transition latency: 10.0 us.
hardware limits: 800 MHz - 2.10 GHz
available frequency steps: 2.10 GHz, 2.00 GHz, 1.90 GHz, 1.80 GHz, 1.70 GHz, 1.60 GHz, 1.50 GHz, 1.40 GHz, 1.30 GHz, 1.20 GHz, 1.10 GHz, 1000 MHz, 900 MHz, 800 MHz
available cpufreq governors: conservative, ondemand, userspace, powersave, performance
current policy: frequency should be within 800 MHz and 1.20 GHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency is 900 MHz.
cpufreq stats: 2.10 GHz:19,26%, 2.00 GHz:2,18%, 1.90 GHz:0,96%, 1.80 GHz:2,12%, 1.70 GHz:1,59%, 1.60 GHz:3,23%, 1.50 GHz:1,01%, 1.40 GHz:0,95%, 1.30 GHz:0,95%, 1.20 GHz:26,41%, 1.10 GHz:2,32%, 1000 MHz:3,82%, 900 MHz:8,82%, 800 MHz:26,37% (1736)
analyzing CPU 2:
driver: acpi-cpufreq
CPUs which run at the same hardware frequency: 2
CPUs which need to have their frequency coordinated by software: 2
maximum transition latency: 10.0 us.
hardware limits: 800 MHz - 2.10 GHz
available frequency steps: 2.10 GHz, 2.00 GHz, 1.90 GHz, 1.80 GHz, 1.70 GHz, 1.60 GHz, 1.50 GHz, 1.40 GHz, 1.30 GHz, 1.20 GHz, 1.10 GHz, 1000 MHz, 900 MHz, 800 MHz
available cpufreq governors: conservative, ondemand, userspace, powersave, performance
current policy: frequency should be within 800 MHz and 1.20 GHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency is 800 MHz.
cpufreq stats: 2.10 GHz:15,92%, 2.00 GHz:2,08%, 1.90 GHz:1,30%, 1.80 GHz:1,82%, 1.70 GHz:0,99%, 1.60 GHz:2,58%, 1.50 GHz:1,49%, 1.40 GHz:0,71%, 1.30 GHz:1,07%, 1.20 GHz:25,61%, 1.10 GHz:2,95%, 1000 MHz:4,23%, 900 MHz:9,29%, 800 MHz:29,97% (1578)
analyzing CPU 3:
driver: acpi-cpufreq
CPUs which run at the same hardware frequency: 3
CPUs which need to have their frequency coordinated by software: 3
maximum transition latency: 10.0 us.
hardware limits: 800 MHz - 2.10 GHz
available frequency steps: 2.10 GHz, 2.00 GHz, 1.90 GHz, 1.80 GHz, 1.70 GHz, 1.60 GHz, 1.50 GHz, 1.40 GHz, 1.30 GHz, 1.20 GHz, 1.10 GHz, 1000 MHz, 900 MHz, 800 MHz
available cpufreq governors: conservative, ondemand, userspace, powersave, performance
current policy: frequency should be within 800 MHz and 1.20 GHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency is 800 MHz.
cpufreq stats: 2.10 GHz:17,93%, 2.00 GHz:2,09%, 1.90 GHz:1,54%, 1.80 GHz:2,17%, 1.70 GHz:1,46%, 1.60 GHz:2,75%, 1.50 GHz:1,05%, 1.40 GHz:0,63%, 1.30 GHz:0,99%, 1.20 GHz:25,53%, 1.10 GHz:2,82%, 1000 MHz:3,92%, 900 MHz:8,81%, 800 MHz:28,33% (1473)
Тоже, но падение до 800:
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
driver: acpi-cpufreq
CPUs which run at the same hardware frequency: 0
CPUs which need to have their frequency coordinated by software: 0
maximum transition latency: 10.0 us.
hardware limits: 800 MHz - 2.10 GHz
available frequency steps: 2.10 GHz, 2.00 GHz, 1.90 GHz, 1.80 GHz, 1.70 GHz, 1.60 GHz, 1.50 GHz, 1.40 GHz, 1.30 GHz, 1.20 GHz, 1.10 GHz, 1000 MHz, 900 MHz, 800 MHz
available cpufreq governors: conservative, ondemand, userspace, powersave, performance
current policy: frequency should be within 800 MHz and 840 MHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency is 800 MHz.
cpufreq stats: 2.10 GHz:31,80%, 2.00 GHz:4,96%, 1.90 GHz:0,99%, 1.80 GHz:4,60%, 1.70 GHz:1,09%, 1.60 GHz:4,72%, 1.50 GHz:0,90%, 1.40 GHz:0,80%, 1.30 GHz:1,21%, 1.20 GHz:8,56%, 1.10 GHz:2,10%, 1000 MHz:4,09%, 900 MHz:12,39%, 800 MHz:21,78% (1128)
analyzing CPU 1:
driver: acpi-cpufreq
CPUs which run at the same hardware frequency: 1
CPUs which need to have their frequency coordinated by software: 1
maximum transition latency: 10.0 us.
hardware limits: 800 MHz - 2.10 GHz
available frequency steps: 2.10 GHz, 2.00 GHz, 1.90 GHz, 1.80 GHz, 1.70 GHz, 1.60 GHz, 1.50 GHz, 1.40 GHz, 1.30 GHz, 1.20 GHz, 1.10 GHz, 1000 MHz, 900 MHz, 800 MHz
available cpufreq governors: conservative, ondemand, userspace, powersave, performance
current policy: frequency should be within 800 MHz and 840 MHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency is 800 MHz.
cpufreq stats: 2.10 GHz:31,24%, 2.00 GHz:4,44%, 1.90 GHz:1,40%, 1.80 GHz:2,73%, 1.70 GHz:1,02%, 1.60 GHz:4,07%, 1.50 GHz:1,19%, 1.40 GHz:0,97%, 1.30 GHz:1,32%, 1.20 GHz:6,52%, 1.10 GHz:3,17%, 1000 MHz:4,92%, 900 MHz:13,63%, 800 MHz:23,40% (1358)
analyzing CPU 2:
driver: acpi-cpufreq
CPUs which run at the same hardware frequency: 2
CPUs which need to have their frequency coordinated by software: 2
maximum transition latency: 10.0 us.
hardware limits: 800 MHz - 2.10 GHz
available frequency steps: 2.10 GHz, 2.00 GHz, 1.90 GHz, 1.80 GHz, 1.70 GHz, 1.60 GHz, 1.50 GHz, 1.40 GHz, 1.30 GHz, 1.20 GHz, 1.10 GHz, 1000 MHz, 900 MHz, 800 MHz
available cpufreq governors: conservative, ondemand, userspace, powersave, performance
current policy: frequency should be within 800 MHz and 840 MHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency is 800 MHz.
cpufreq stats: 2.10 GHz:32,46%, 2.00 GHz:4,31%, 1.90 GHz:0,89%, 1.80 GHz:5,13%, 1.70 GHz:0,89%, 1.60 GHz:2,43%, 1.50 GHz:0,91%, 1.40 GHz:1,29%, 1.30 GHz:2,03%, 1.20 GHz:7,35%, 1.10 GHz:2,47%, 1000 MHz:5,48%, 900 MHz:5,80%, 800 MHz:28,54% (1089)
analyzing CPU 3:
driver: acpi-cpufreq
CPUs which run at the same hardware frequency: 3
CPUs which need to have their frequency coordinated by software: 3
maximum transition latency: 10.0 us.
hardware limits: 800 MHz - 2.10 GHz
available frequency steps: 2.10 GHz, 2.00 GHz, 1.90 GHz, 1.80 GHz, 1.70 GHz, 1.60 GHz, 1.50 GHz, 1.40 GHz, 1.30 GHz, 1.20 GHz, 1.10 GHz, 1000 MHz, 900 MHz, 800 MHz
available cpufreq governors: conservative, ondemand, userspace, powersave, performance
current policy: frequency should be within 800 MHz and 840 MHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency is 800 MHz.
cpufreq stats: 2.10 GHz:30,55%, 2.00 GHz:5,16%, 1.90 GHz:1,85%, 1.80 GHz:2,73%, 1.70 GHz:1,29%, 1.60 GHz:4,00%, 1.50 GHz:1,22%, 1.40 GHz:1,10%, 1.30 GHz:1,99%, 1.20 GHz:4,63%, 1.10 GHz:2,06%, 1000 MHz:3,99%, 900 MHz:10,91%, 800 MHz:28,54% (1216)
Есть ли тут волшебники, которые могут меня спасти от этого проклятья?