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

Я использую машину Debian 8 amd64 для сравнительного тестирования. Во время экспериментирования я хотел бы, чтобы ЦП работал в фиксированной частоте (предпочтительно возможный максимум). Это исключит тактовую частоту ЦП как источник вариации в результатах.

После некоторого чтения кажется, что корректная вещь сделать состоит в том, чтобы изменить регулятор ЦП на performance, который описан здесь в документации ядра Linux:

Регулятор CPUfreq "производительность" устанавливает ЦП статически на наибольшую частоту в пределах границ scaling_min_freq и scaling_max_freq.

К сожалению, более подробная информация о scaling_min_freq и scaling_max_freq не предоставляются. Надо надеяться, это не должно иметь значения, поскольку используемая частота ЦП является максимальным значением интервала.

Таким образом, я включил этот cpufreq-набор использования регулятора:

$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
performance
performance
performance
performance

И в придачу, я также отключил турбо режим повышения в BIOS:

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

На основе вышеупомянутого описания регулятора производительности я не ожидал бы колебания тактовой частоты ЦП. Все же, если я неоднократно работаю cpufreq-info, Я вижу, что тактовая частота колеблется:

$ cpufreq-info | grep 'current CPU fr'
  current CPU frequency is 4.00 GHz.
  current CPU frequency is 3.99 GHz.
  current CPU frequency is 4.00 GHz.
  current CPU frequency is 4.00 GHz.
$ cpufreq-info | grep 'current CPU fr'
  current CPU frequency is 4.00 GHz.
  current CPU frequency is 4.00 GHz.
  current CPU frequency is 4.00 GHz.
  current CPU frequency is 3.96 GHz.
$ cpufreq-info | grep 'current CPU fr'
  current CPU frequency is 4.00 GHz.
  current CPU frequency is 4.00 GHz.
  current CPU frequency is 4.00 GHz.
  current CPU frequency is 3.94 GHz.
$ cpufreq-info | grep 'current CPU fr'
  current CPU frequency is 4.01 GHz.
  current CPU frequency is 4.00 GHz.
  current CPU frequency is 4.00 GHz.
  current CPU frequency is 3.98 GHz.

Действительно ли это колебание происходит из-за аппаратных средств, BIOS, ядра или некоторого другого фактора? Существует ли способ установить частоту ЦП, таким образом, что это не колеблется вообще?

8
задан 24 August 2015 в 16:45
3 ответа

После некоторых экспериментов, думаю, я смогу ответить на свой вопрос.

Как упоминалось в этой теме , на определенном оборудовании Intel есть два способа управления Частота процессора:

  • Использование pstate.
  • Использование обычного ACPI.

Когда используется pstate, BIOS имеет право голоса по поводу тактовой частоты, и кажется, что это является источником колебаний.

Вы можно принудительно отключить pstate, добавив intel_pstate = disable к аргументам ядра (отредактируйте / etc / default / grub и добавьте аргумент в GRUB_CMDLINE_LINUX_DEFAULT . Наконец, запустите . ] sudo update-grub ).

После этого вывод cpufreq-info выглядит совсем иначе, и я также заметил, что стал доступен другой набор регуляторов процессора (например, ] ondemand теперь доступен).

Самое главное, что после установки регулятора на производительность , тактовая частота теперь фиксирована (в моем случае до 4,00GH z).

Вы можете посмотреть в / sys / devices / system / cpu / cpu * / cpufreq / scaling_driver , чтобы определить, используется ли pstate или ACPI для масштабирования ЦП. Эти файлы могут принимать значения acpi-cpufreq или intel_pstate .

7
ответ дан 2 December 2019 в 22:58

Для современных процессоров Intel частота регулируется сам процессор и P-состояния, выставленные программному обеспечению, связаны с уровни производительности. Идея о том, что частота может быть установлена ​​на единую частоту, является фикцией для процессоров Intel Core . Даже если масштабирование драйвер выбирает одно состояние P - фактическую частоту процессора будет работать, выбрано самим процессором. [1]

[1] https://www.kernel.org/doc/Documentation/cpu-freq/intel-pstate.txt

4
ответ дан 2 December 2019 в 22:58

Я прочитал эту ветку, потому что я слишком хотел установить фиксированную частоту для моего процессора, так как вентилятор больше не работает (конечно, такие вещи случаются, когда вы за границей на затерянном острове для дайвинга досуг!), поэтому я больше хотел установить самую низкую частоту (800Mhz) .. я наконец-то смог изменить scaling_max_freq в / sys / devices / system / cpu / cpu * / cpufreq / для каждого процессора конфигурации, и теперь все в порядке, частота должна измениться с 800Mhz на .... 800Mhz. Он работает и решил проблему с перегревом, с которой я столкнулся ... (теперь частота составляет 799 МГц, и он не двигается, что позволяет процессору оставаться около 50 ° C!)

PS: я также отключил турбо-режим (3 , 1 ГГц)

-1
ответ дан 2 December 2019 в 22:58

Теги

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