Используя ядро 3.13.0-37, работает частотное масштабирование ЦП, и я могу управлять им с помощью апплета подстройки частоты ЦП.
Я обновил до ядра 3.16.0-38, апплет теперь сообщает мне, что частотное масштабирование ЦП не поддерживается.
Я проверил конфигурацию ядра, я даже перекомпилировал ядро, удостоверившись, что всем различным губернаторам включают.
Таким образом, я предполагаю, что мой вопрос
Какие настройки ядра должны быть включены, чтобы частотное масштабирование работало?
Я запускаю Ubuntu 14.04 с Gnome, и я также запускаю Linux Mint 17.2 с Корицей (я знаю, что это не форум Монетного двора). Та же проблема на каждом.
Спасибо за любые указатели.
Примечание: Это не ответ на вопрос, а скорее ответ на фактическую основную проблему.
более старое ядро, 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/