У меня есть новый сервер Ubuntu 18.04 на процессоре i9-9900KF, на котором я хотел бы провести тяжелые вычисления. Поскольку он имеет 16 потоков, я переключил все 16 /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
в режим производительности и остановил службу ondemand с помощью sudo systemctl disable ondemand
, чтобы она зависала после перезагрузки (так и есть).
Результат удивителен. Перед изменением (при ограничителе энергосбережения) частоты на холостом ходу составляют 800 МГц (как ожидается, согласно значению scaling_min_freq
) и 4700 МГц под нагрузкой (значение scaling_max_freq
равно 5000000
).
После изменения частота холостого хода, как и ожидалось, составляет 5000 МГц, но под нагрузкой она снова составляет 4700 МГц ...? Таким образом, под нагрузкой не имеет значения, какое значение имеет регулятор, но с регулятором производительности частота холостого хода еще выше.
Что может быть причиной этого? Мой блок питания должен работать на 600 Вт, и у меня ничего нет, кроме материнской платы, водяного кулера с двумя вентиляторами, M2 SSD и корпуса с 4 вентиляторами (поэтому я не думаю, что здесь должна быть проблема с питанием ...?).
Как правило, максимальная частота тактовой частоты ЦП является функцией того, сколько ядер активно.
турбостат Использования (linux-tools-common пакет), чтобы читать и декодировать регистр MSR_TURBO_RATIO_LIMIT. Пример (отредактированный, 4 основных процессора):
$ sudo turbostat
...
cpu3: 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:~$ sudo turbostat --quiet --Summary --show Busy%,Bzy_MHz,PkgTmp,PkgWatt,GFXWatt,IRQ --interval 15
Busy% Bzy_MHz IRQ PkgTmp PkgWatt GFXWatt
0.03 1600 767 26 3.70 0.12
0.04 1600 778 26 3.70 0.12
0.06 1627 1138 25 3.71 0.12
37.28 3495 45585 47 23.90 0.12 <<< Load applied
100.00 3500 120635 53 58.51 0.12 <<< Observe CPU freq pinned at 4 core limit
100.00 3500 120604 57 59.28 0.12 <<< Observe processor package temperature rising
100.00 3500 120598 62 59.96 0.12
100.00 3500 120646 65 60.96 0.12
100.00 3500 120603 69 61.53 0.12
100.00 3500 120603 70 61.88 0.12
100.00 3500 120643 71 62.17 0.12
100.00 3500 120634 71 62.35 0.12
100.00 3500 120615 72 62.52 0.12
100.00 3500 120683 73 62.66 0.12
100.00 3500 120656 74 62.86 0.12
100.00 3500 120630 75 62.97 0.12
100.00 3500 120623 75 63.04 0.12
100.00 3500 120616 76 63.14 0.12
Я ожидал бы, что это происходит из-за температуры, это называют, регулируя, и она сделана системой (обычно ОС или BIOS) для предотвращения вреда ЦП. Чтобы сказать, происходит ли это из-за регулировки или нет, необходимо было бы посмотреть (или идеально график) при температуре ЦП и Частоте ЦП, если Вы нашли, что частота уменьшается с более высокой температурой затем, это регулирует.
Динамическое частотное масштабирование (также известный как регулировка ЦП) является техникой в архитектуре ЭВМ, посредством чего частота микропроцессора может быть автоматически скорректирована "на лету" в зависимости от фактических потребностей, для сохранения питания и уменьшают количество тепла, сгенерированное микросхемой
, См. также: https://en.wikipedia.org/wiki/Dynamic_frequency_scaling