Ubuntu Turbo Boost - усиление всех ядер вместо одного для загрузки одного потока

У меня Ubuntu 19.04 со всеми обновлениями, установленными с процессором Intel i9 9900k и материнской платой Asrock H370M pro4, она обновлена ​​до последней версии BIOS.

Я не могу заставить Turbo Boost работать для однопоточных нагрузок (которых у меня достаточно, и повышение в Ghz было бы очень полезно). Если я запускаю некую загрузку по одному потоку (и могу подтвердить, что загружается только одно ядро), например :

sysbench --threads=1 --time=1000 --test=cpu run

Я вижу, что все ядра скачут до 4,7 ГГц. Я ожидаю, что ядро ​​с нагрузкой ниже 100% должно подскочить до 5,0 ГГц

У меня включено турбонаддув:

$ cat /sys/devices/system/cpu/intel_pstate/no_turbo
0

(если я отключу его, скорость процессора не поднимется выше 3,7)

Я читал, что иногда некоторые инструменты не сообщают точную частоту, и на самом деле может работать турбо-буст - я пробовал множество инструментов, но ни один из них не отличался (все ядра с максимальной скоростью 4.7 при загрузке одного потока ).

turbostat, например, правильно идентифицирует параметры турбобуста:

cpu1: MSR_IA32_POWER_CTL: 0x003c005d (C1E auto-promotion: DISabled)
cpu1: MSR_TURBO_RATIO_LIMIT: 0x2f2f2f3030313232
47 * 100.0 = 4700.0 MHz max turbo 8 active cores
47 * 100.0 = 4700.0 MHz max turbo 7 active cores
47 * 100.0 = 4700.0 MHz max turbo 6 active cores
48 * 100.0 = 4800.0 MHz max turbo 5 active cores
48 * 100.0 = 4800.0 MHz max turbo 4 active cores
49 * 100.0 = 4900.0 MHz max turbo 3 active cores
50 * 100.0 = 5000.0 MHz max turbo 2 active cores
50 * 100.0 = 5000.0 MHz max turbo 1 active cores

Тем не менее, при однопоточной нагрузке он также показывает, что все ядра имеют частоту 4,7 ГГц, несмотря на то, что загружен только один:

$cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
4815705
4721193
4799105
4772830
4794879
4782198
4891662
4714048
4749921
4737188
4801009
4859085
4734327
4735355
4747906
4826031

В BIOS нет настроек, чтобы все ядра всегда работали на максимальной скорости (без оптимизации ядра или чего-либо, что удаленно связано с ядрами), я попытался поиграть со всеми возможными настройками без изменений.

Я пытался изменить процессор на производительность безрезультатно - только все ядра постоянно заблокированы на уровне 4.7, а не по требованию.

Что интересно, если я отключу ядра с помощью echo 0 | sudo tee /sys/devices/system/cpu/cpu1/online и оставлю только 2 ядра в сети - они на самом деле достигают 5,0 ГГц, но это определенно не является устойчивым решением.

Посоветуйте, пожалуйста, что еще можно сделать

Заранее спасибо!

0
задан 5 September 2019 в 16:57

2 ответа

Получить самую точную текущую скорость ЦП для каждого базового использования:

$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
1367598
1617138
1425100
1719268
1414236
1545359
1295130
1163015

существует три подразумеваемых десятичных разряда так скорость первого ядра, о которой сообщают, поскольку 1367598 действительно 1 367.598 МГц. При использовании этого метода, необходимо видеть ядро при загрузке с верхняя частота, чем остальные.

<час>

TL; DR

у меня был незначительный сбой приблизительно в течение года, куда все процессоры будут работать близко к макс. частоте ни при какой загрузке. Затем под видеопотоком они все спали бы приблизительно до 50%-й частоты, и загрузка составит приблизительно 20 - 25%. Этот незначительный сбой сохранялся до прошлой недели, когда я установил ядро 4.14.140. По крайней мере, теперь кажется, что незначительного сбоя не стало.

0
ответ дан 23 October 2019 в 03:14

Ваш компьютер выполняет настольную версию Ubuntu со всем тем материалом GUI? Проблема - то, что "неактивный" на настольном компьютере на самом деле не и что Вы наблюдаете в своих списках частот ЦП, результат других ядер, просыпающихся, чтобы сделать другие задачи.

Мой основной тестовый компьютер является сервером Ubuntu 16.04 (никакой GUI) с более старым i7-2600K. "неактивный" является лучше, чем для рабочего стола, но все еще большим. Однако, если я отключаю несколько "неактивных" сервисов, становится намного лучше, и мы начинаем наблюдать большое количество времени, проведенное на максимальной одной активной частоте ядра процессора, когда мы впоследствии применяем единственную 100%-ю загрузку (12,5% 1 из 8 центральных процессоров в предельной нагрузке):

cpu5: MSR_IA32_POWER_CTL: 0x0004005d (C1E auto-promotion: DISabled)
cpu5: MSR_TURBO_RATIO_LIMIT: 0x23242526
35 * 100.0 = 3500.0 MHz max turbo 4 active cores
36 * 100.0 = 3600.0 MHz max turbo 3 active cores
37 * 100.0 = 3700.0 MHz max turbo 2 active cores
38 * 100.0 = 3800.0 MHz max turbo 1 active cores

doug@s15:~/temp$ cat set_cpu_turn_off_services
#! /bin/bash
# Turn off some services to try to get "idle" to be more "idle"
sudo systemctl stop mysql.service
sudo systemctl stop apache2.service
sudo systemctl stop nmbd.service
sudo systemctl stop smbd.service
sudo systemctl stop cron.service
sudo systemctl stop winbind.service
sudo systemctl stop apt-daily.timer
sudo systemctl stop libvirtd.service

doug@s15:~/temp$ sudo ./set_cpu_turn_off_services
doug@s15:~/temp$ sudo turbostat --quiet --Summary --show Busy%,Bzy_MHz,PkgTmp,PkgWatt,GFXWatt,IRQ --interval 15
Busy%   Bzy_MHz IRQ     PkgTmp  PkgWatt GFXWatt
0.03    1600    686     25      3.79    0.12  <<< Check my idle, before applying load
0.02    1600    401     27      3.78    0.12
0.02    1600    395     25      3.78    0.12
0.02    1600    356     26      3.78    0.12
0.02    1600    395     25      3.78    0.12
10.25   3796    12991   42      19.44   0.12  <<< Apply single 100% load
12.51   3800    15777   44      23.12   0.12  <<< max turbo freq for 1 active core.
12.51   3800    15740   45      23.21   0.12
12.51   3800    15769   47      23.31   0.12
0
ответ дан 23 October 2019 в 03:14

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

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