LINUX.ORG.RU
решено ФорумAdmin

intel_pstate у кого-нибудь работает адекватно?

 , ,


1

1

Обнаружилось после установки ubuntu 20.04 или 24.04, что частота cpu пробивает дно.

Простенький сервер с двумя процессорами intel xeon silver 4210 2.2GHz(10 ядер 20 потоков) который после загрузки оказывается диким тормозом.
turbostate показывает Bzy_MHz 700МГц ! Для всех ядер настройки одинаковые.

# cpupower -c 0 frequency-info 
  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:  Cannot determine or is not supported.
  hardware limits: 800 MHz - 3.20 GHz
  available cpufreq governors: performance powersave
  current policy: frequency should be within 1.80 GHz and 3.20 GHz.
                  The governor "performance" may decide which speed to use
                  within this range.
  current CPU frequency: Unable to call hardware
  current CPU frequency: 700 MHz (asserted by call to kernel)

# ( cd /sys/devices/system/cpu/cpufreq/policy0 && grep . * )
affected_cpus:0
base_frequency:2100000
cpuinfo_max_freq:3200000
cpuinfo_min_freq:800000
cpuinfo_transition_latency:0
energy_performance_available_preferences:default performance balance_performance balance_power power 
energy_performance_preference:performance
related_cpus:0
scaling_available_governors:performance powersave
scaling_cur_freq:699997
scaling_driver:intel_pstate
scaling_governor:performance
scaling_max_freq:3200000
scaling_min_freq:1800000
scaling_setspeed:<unsupported>

# ( cd /sys/devices/system/cpu/intel_pstate/ && grep . * )
hwp_dynamic_boost:0
max_perf_pct:100
min_perf_pct:25
no_turbo:0
num_pstates:25
status:active
turbo_pct:45

Поднять частоту можно двумя способами:
1) Загузить половину потоков (stress-ng --cpu 20)
2) выполнить cpupower idle-set -d 1 (запрет P-State С1)
В обоих случаях частота изменяется очень медленно в обе стороны. от 700MHz до 2700MHz примерно 25-30 секунд и 40-60 секунд назад.

Гугление показало, что я не один такой и проблема именно в настройках убунты.

Почти все треды заканчиваются советом «intel_pstate=disable»
Применение её приводит к использованию acpi-cpufreq, где все работает адекватно: 1 ядро можно раскрутить до 3.19ГГц, а дальше максимальная частота падает.

# 
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: 1000 MHz - 2.20 GHz
  available frequency steps:  2.20 GHz, 2.20 GHz, 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
  available cpufreq governors: conservative ondemand userspace powersave performance schedutil
  current policy: frequency should be within 1000 MHz and 2.20 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency: 1000 MHz (asserted by call to hardware)
  boost state support:
    Supported: yes
    Active: yes

# turbostat --Summary --quiet --show Busy%,Bzy_MHz,PkgWatt,CoreTmp --interval 3
Busy%	Bzy_MHz	CoreTmp	PkgWatt
0.02	1006	34	23.96
0.01	1000	34	23.78

# stress-ng --cpu 1 &
# turbostat --Summary --quiet --show Busy%,Bzy_MHz,PkgWatt,CoreTmp --interval 3
Busy%	Bzy_MHz	CoreTmp	PkgWatt
2.52	3184	40	57.00
2.52	3178	41	56.97

# stress-ng --cpu 40 &
# turbostat --Summary --quiet --show Busy%,Bzy_MHz,PkgWatt,CoreTmp --interval 3
Busy%	Bzy_MHz	CoreTmp	PkgWatt
100.00	2699	46	140.32
100.00	2699	47	143.71

Аналогичный сервер с Ubuntu 18.04.6 LTS и с intel_ptate в простое показывает 2.7GHz & 33Watt

# turbostat --Summary --quiet --show Busy%,Bzy_MHz,PkgWatt,PkgTmp --interval 3
Busy%	Bzy_MHz	PkgTmp	PkgWatt
0.76	2697	41	33.61
0.46	2698	41	32.99

# cpupower -c 30 frequency-info
analyzing CPU 30:
  driver: intel_pstate
  CPUs which run at the same hardware frequency: 30
  CPUs which need to have their frequency coordinated by software: 30
  maximum transition latency:  Cannot determine or is not supported.
  hardware limits: 800 MHz - 3.20 GHz
  available cpufreq governors: performance powersave
  current policy: frequency should be within 1.20 GHz and 3.20 GHz.
                  The governor "performance" may decide which speed to use
                  within this range.
  current CPU frequency: Unable to call hardware
  current CPU frequency: 2.70 GHz (asserted by call to kernel)
  boost state support:
    Supported: yes
    Active: yes

Вопрос: может есть способ настроить адекватно intel_pstate?
Или ну его нафиг, если acpi-cpufreq работает?

★★★★★

Последнее исправление: dataman (всего исправлений: 1)
Ответ на: комментарий от cobold

На базовой частоте по всем ядрам лично из моего опыта оно работает, только если полностью вырубить турбобуст в биосе. Без этого скачет по всем ядрам.

например у меня так сейчас

Every 2.0s: grep MHz /proc/cpuinfo                                   host: Mon Jan 27 21:27:36 2025

cpu MHz         : 1617.264
cpu MHz         : 2500.000
cpu MHz         : 2500.000
cpu MHz         : 2500.000
cpu MHz         : 2500.000
cpu MHz         : 2500.830
cpu MHz         : 2500.000
cpu MHz         : 1565.433
cpu MHz         : 2500.000
cpu MHz         : 2500.283
cpu MHz         : 2500.132
cpu MHz         : 2500.000

vbcnthfkmnth123 ★★★★★
()
Последнее исправление: vbcnthfkmnth123 (всего исправлений: 1)
Ответ на: комментарий от anonymous

все работают на наибольшей из частот ядер

У меня глючит и бустится все ядра сразу, хотя по спекам должно бустится максимум одно. Поэтому мне пришлось турбобуст вырубить, чтобы все не сгорело.

vbcnthfkmnth123 ★★★★★
()
Последнее исправление: vbcnthfkmnth123 (всего исправлений: 1)
Ответ на: комментарий от anonymous

При этих Bzy_MHz 700 все ядра ~700МГц

$ grep  'cpu MHz' /proc/cpuinfo  
cpu MHz		: 699.995
cpu MHz		: 699.990
cpu MHz		: 699.996
cpu MHz		: 700.000
cpu MHz		: 700.000
cpu MHz		: 699.987
cpu MHz		: 699.900
cpu MHz		: 699.978
cpu MHz		: 700.000
cpu MHz		: 699.969
cpu MHz		: 699.938
cpu MHz		: 700.018
cpu MHz		: 699.994
...
openssl speed -evp aes-256-cbc
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
aes-256-cbc     132538.78k   186868.54k   190273.19k   190828.20k   191498.27k   191163.05k
В то время как на acpi-cpufreq
$ openssl speed -evp aes-256-cbc
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
AES-256-CBC     652839.47k   848890.30k   866477.99k   869490.69k   876817.07k   876953.60k

vel ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Пробовал passive,no_hwp,per_cpu_perf_limits - пофиг.

Кроме этого там еще есть кучка настроек в биосе. Пробовал разные варианты, даже сбрасывал настройки биоса на дефолтные. ПОФИГ!

Смена governors тоже практически не влияет.

vel ★★★★★
() автор топика
Последнее исправление: vel (всего исправлений: 1)
Ответ на: комментарий от vbcnthfkmnth123

Не знаю насчёт intel_pstate (все компы, к которым у меня сейчас есть доступ, амудешные), но с amd_pstate /proc/cpuinfo показывает погоду на Марсе, а не реальные частоты, и смотреть нужно выхлоп cpufreq monitor (или ryzen_monitor)

annulen ★★★★★
()

Или ну его нафиг, если acpi-cpufreq работает?

Если я правильно понимаю, то единственная слабость acpi-cpufreq по сравнению с «аппаратными» регуляторами в том, то он медленнее реагирует на изменение нагрузки. Так что может и «ну его».

annulen ★★★★★
()
Последнее исправление: annulen (всего исправлений: 1)

Сформулирую вопрос иначе: какго хрена при появлении активного вычислительного прроцесс частота поднимается за десятки секунд?

Почему нужно полностью загрузить не менее половины ядер/потоков чтобы начался подъём частоты?

Если это так и задумано, то intel_pstate идёт нафиг.

vel ★★★★★
() автор топика
Ответ на: комментарий от vel

У тебя серверный проц, рассчитанный на высокопараллельную нагрузку. Если потоков мало значит он простаивает и надо снижать частоту. Почему он медленно её меняет - непонятно, да.

firkax ★★★★★
()

Меняется только частота в cpufreq или софт тоже тормозит? На старых ЦП intel_pstate не умеет считывать нормально данные и проц своей жизнью живёт. На не серверном скайлайке у меня была максимальная всегда, даже если cpufreq powersave включить, но это нормально как я понял лет 5-10 назад.

drl
()
Ответ на: комментарий от vel

дело в следующем: if the Intel P-State scaling driver is used in active mode, the P-State scaling governor will be changed to powersave as it is the only P-State scaling governor that allows for the “Energy vs Performance Hints” to be taken into consideration, ie. the only P-State scaling governor that allows power-profiles-daemon to work.

Obezyan
()
Ответ на: комментарий от Obezyan

в прошлом году пофиксили, для амд решается подбором governer profile и включением AMD CPPC в uefi.

А можно по-подробнее? Чисто отображение /proc/cpuinfo пофиксили? Так а зачем оно надо, я думал это и не баг даже.

annulen ★★★★★
()

ubuntu 20.04 или 24.04

Можно попробовать поменять ядро, на более старое или новое. Выглядит как будто не работает intel_pstate или не те регистры msr дергает. У интел (или матплаты) есть своя утилита настройки/мониторинга?

anonymous
()
Ответ на: комментарий от Obezyan

power-profiles-daemon?

В ubuntu 20 такого нет. Только если собрать самому.

В ubuntu 24 есть и с ним управление частотами работает адекватно.

Спасибо тебе!

vel ★★★★★
() автор топика
Последнее исправление: vel (всего исправлений: 1)