Частотное масштабирование больше не работает после обновления ядра

Используя ядро 3.13.0-37, работает частотное масштабирование ЦП, и я могу управлять им с помощью апплета подстройки частоты ЦП.

Я обновил до ядра 3.16.0-38, апплет теперь сообщает мне, что частотное масштабирование ЦП не поддерживается.

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

Таким образом, я предполагаю, что мой вопрос

Какие настройки ядра должны быть включены, чтобы частотное масштабирование работало?

Я запускаю Ubuntu 14.04 с Gnome, и я также запускаю Linux Mint 17.2 с Корицей (я знаю, что это не форум Монетного двора). Та же проблема на каждом.

Спасибо за любые указатели.

0
задан 26 September 2015 в 20:17

1 ответ

Примечание: Это не ответ на вопрос, а скорее ответ на фактическую основную проблему.

более старое ядро, 3.13.0-37, использовало acpi-cpufreq драйвер частотного масштабирования ЦП по умолчанию. По-видимому, тот драйвер был совместим с любым высокоуровневым апплетом, использовался для управления частотным масштабированием ЦП.

более новое ядро, 3.16.0-38. используемый intel_pstate драйвер частотного масштабирования ЦП по умолчанию. По-видимому, тот драйвер не совместим с любым высокоуровневым апплетом, использовался для управления частотным масштабированием ЦП. Информация вводила в заблуждение, и вопрос задали на основе веры, что не было никакого частотного масштабирования когда на самом деле было.

intel_pstate драйвер имел проблематичную историю с иногда очень очень плохими ошибками. Какое-то время это было отключено значением по умолчанию в Ubuntu. Позже (в прошлом году) это имеет включенный значением по умолчанию снова. Самостоятельно, я думаю, что существует все еще несколько проблем с intel_pstate драйвером (и это был мой фокус в течение очень долгого времени теперь).

можно переопределить драйвер масштабирования значения по умолчанию через GRUB_CMDLINE_LINUX_DEFAULT строка в /etc/default/grub. Например (включает некоторый другой материал, который я использую):

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 intel_pstate=disable net.ifnames=1 biosdevname=0 crashkernel=384M-:128M"

или:

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 intel_pstate=enable net.ifnames=1 biosdevname=0 crashkernel=384M-:128M"

всегда помнят (я редко помню) к:

sudo update-grub

впоследствии.

А очень много пользователей жалуются, что их частоты ЦП слишком высоки с intel_pstate драйвером. Во многих случаях это верно. Однако нужно также посмотреть на состояния C (различные уровни неактивных) для реального знания то, что продолжает их процессор, и если они должны быть заинтересованы или нет. Поскольку процессоры развиваются, и глубже C состояния доступны, иногда использование более высокой частоты ЦП для задачи и затем входя в более глубокое состояние C раньше может привести к меньшему количеству потребления энергии в целом. Это - одна причина, исходный специалист по обслуживанию intel_pstate драйвера использовал имя powersave для основного регулятора, который является грубо и примерно эквивалент регулятора acpi-cpufreq ondemand. Регулятор, называющий, является источником беспорядка для многих пользователей.

Так или иначе, рекомендуемый инструмент для получения обратной связи на состояниях C и таком является турбостатом. Я не могу вспомнить, какой пакет содержит турбостат, потому что я всегда компилирую его сам из источника ядра. Турбостат в качестве примера выполняется:

$ sudo ./turbostat -d sleep 10
turbostat version 4.7 17-June, 2015 - Len Brown <lenb@kernel.org>
CPUID(0): GenuineIntel 13 CPUID levels; family:model:stepping 0x6:2a:7 (6:42:7)
CPUID(6): APERF, DTS, PTM, EPB
RAPL: 690 sec. Joule Counter Range, at 95 Watts
cpu2: MSR_NHM_PLATFORM_INFO: 0x100070012200
16 * 100 = 1600 MHz max efficiency frequency
34 * 100 = 3400 MHz base frequency
cpu2: MSR_IA32_POWER_CTL: 0x0004005d (C1E auto-promotion: DISabled)
cpu2: MSR_TURBO_RATIO_LIMIT: 0x23242526
35 * 100 = 3500 MHz max turbo 4 active cores
36 * 100 = 3600 MHz max turbo 3 active cores
37 * 100 = 3700 MHz max turbo 2 active cores
38 * 100 = 3800 MHz max turbo 1 active cores
cpu2: MSR_NHM_SNB_PKG_CST_CFG_CTL: 0x1e008403 (UNdemote-C3, UNdemote-C1, demote-C3, demote-C1, locked: pkg-cstate-limit=3: pc6r)
cpu0: MSR_IA32_ENERGY_PERF_BIAS: 0x00000006 (balanced)
cpu0: MSR_RAPL_POWER_UNIT: 0x000a1003 (0.125000 Watts, 0.000015 Joules, 0.000977 sec.)
cpu0: MSR_PKG_POWER_INFO: 0x01e002f8 (95 W TDP, RAPL 60 - 0 W, 0.000000 sec.)
cpu0: MSR_PKG_POWER_LIMIT: 0x800087f8001487f8 (locked)
cpu0: PKG Limit #1: ENabled (255.000000 Watts, 1.000000 sec, clamp DISabled)
cpu0: PKG Limit #2: ENabled (255.000000 Watts, 0.000977* sec, clamp DISabled)
cpu0: MSR_PP0_POLICY: 0
cpu0: MSR_PP0_POWER_LIMIT: 0x00000000 (UNlocked)
cpu0: Cores Limit: DISabled (0.000000 Watts, 0.000977 sec, clamp DISabled)
cpu0: MSR_PP1_POLICY: 0
cpu0: MSR_PP1_POWER_LIMIT: 0x00000000 (UNlocked)
cpu0: GFX Limit: DISabled (0.000000 Watts, 0.000977 sec, clamp DISabled)
cpu0: MSR_IA32_TEMPERATURE_TARGET: 0x00621200 (98 C)
cpu0: MSR_IA32_PACKAGE_THERM_STATUS: 0x88430000 (31 C)
cpu0: MSR_IA32_THERM_STATUS: 0x88440000 (30 C +/- 1)
cpu1: MSR_IA32_THERM_STATUS: 0x88440000 (30 C +/- 1)
cpu2: MSR_IA32_THERM_STATUS: 0x88420000 (32 C +/- 1)
cpu3: MSR_IA32_THERM_STATUS: 0x88440000 (30 C +/- 1)
    Core     CPU Avg_MHz   %Busy Bzy_MHz TSC_MHz     SMI  CPU%c1  CPU%c3  CPU%c6  CPU%c7 CoreTmp  PkgTmp Pkg%pc2 Pkg%pc3 Pkg%pc6 PkgWatt CorWatt GFXWatt
       -       -       0    0.03    1606    3411       0    0.13    0.01   99.83    0.00      24      25    2.04    0.00   97.48    3.89    0.28    0.23
       0       0       1    0.06    1606    3411       0    0.12    0.02   99.80    0.00      24      25    2.04    0.00   97.48    3.89    0.28    0.23
       0       4       0    0.01    1604    3411       0    0.17
       1       1       1    0.05    1606    3411       0    0.08    0.02   99.85    0.00      24
       1       5       0    0.02    1605    3411       0    0.11
       2       2       1    0.04    1607    3411       0    0.17    0.00   99.79    0.00      24
       2       6       0    0.01    1605    3411       0    0.20
       3       3       0    0.03    1605    3411       0    0.09    0.00   99.89    0.00      24
       3       7       0    0.01    1605    3411       0    0.10
10.001485 sec

Мой более старый i7 процессор только переходит к уровню C6, но заметьте, сколько времени он проводит там в более чем 99%. Таким образом потребляемая мощность является очень низкой на уровне 3,9 ватт для пакета, потому что главным образом мои центральные процессоры находятся в глубоком состоянии ожидания.

Hope это помогает.

Редактирование: пример компиляции турбостата:
Первый, я никогда не могу помнить, где это:

doug@s15:~$ locate turbostat.c
/home/doug/temp-k-git/linux/tools/power/x86/turbostat/turbostat.c
1127-секундный, пойдите туда и скомпилируйте его:

doug@s15:~$ cd /home/doug/temp-k-git/linux/tools/power/x86/turbostat
doug@s15:~/temp-k-git/linux/tools/power/x86/turbostat$ make
gcc -Wall -DMSRHEADER='"../../../../arch/x86/include/asm/msr-index.h"' turbostat.c -o /home/doug/temp-k-git/linux/tools/power/x86/turbostat/turbostat

В-третьих, помещает его, где я всегда использую его:

doug@s15:~/temp-k-git/linux/tools/power/x86/turbostat$ cp turbostat ~/temp/
0
ответ дан 1 October 2019 в 01:04

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

Похожие вопросы: