Я использую машину Debian 8 amd64 для тестирования производительности. Во время экспериментов я бы хотел, чтобы процессор работал на фиксированной частоте (желательно максимально возможной). Это исключит тактовую частоту процессора как источник изменений в результатах.
После некоторого прочтения кажется, что правильная вещь - это изменить регулятор ЦП на то performance
, что описано здесь в документации по ядру Linux :
«Производительность» регулятора CPUfreq статически устанавливает центральный процессор на максимальную частоту в границах scaling_min_freq и scaling_max_freq.
К сожалению, более подробная информация о scaling_min_freq
и scaling_max_freq
не предоставляется. Надеюсь, это не должно иметь значения, поскольку используемая частота процессора является максимальным значением интервала.
Итак, я включил этот регулятор с помощью cpufreq-set:
$ cat / sys / devices / system / cpu / cpu * / cpufreq / scaling_governor представление представление представление представление
И для хорошей меры я также отключил режим турбонаддува в BIOS:
$ cat / sys / devices / system / cpu / intel_pstate / no_turbo 1
Исходя из приведенного выше описания регулятора производительности, я бы не ожидал колебаний тактовой частоты процессора. И все же, если я несколько раз бегу cpufreq-info
, я вижу колебания тактовой частоты
$ cpufreq-info | grep 'текущий процессор fr' Текущая частота процессора составляет 4,00 ГГц. Текущая частота процессора составляет 3,99 ГГц. Текущая частота процессора составляет 4,00 ГГц. Текущая частота процессора составляет 4,00 ГГц. $ cpufreq-info | grep 'текущий процессор fr' Текущая частота процессора составляет 4,00 ГГц. Текущая частота процессора составляет 4,00 ГГц. Текущая частота процессора составляет 4,00 ГГц. Текущая частота процессора составляет 3,96 ГГц. $ cpufreq-info | grep 'текущий процессор fr' Текущая частота процессора составляет 4,00 ГГц. Текущая частота процессора составляет 4,00 ГГц. Текущая частота процессора составляет 4,00 ГГц. Текущая частота процессора составляет 3,94 ГГц. $ cpufreq-info | grep 'текущий процессор fr' Текущая частота процессора составляет 4,01 ГГц. Текущая частота процессора составляет 4,00 ГГц. Текущая частота процессора составляет 4,00 ГГц. Текущая частота процессора составляет 3,98 ГГц.
Это колебание связано с аппаратным обеспечением, BIOS, ядром или каким-то другим фактором? Есть ли способ установить частоту процессора так, чтобы она вообще не колебалась?
источник
Ответы:
После некоторых экспериментов, я думаю, что смогу ответить на свой вопрос.
Как упоминалось в этой теме , на некоторых аппаратных средствах Intel существует два способа управления частотой процессора:
Когда используется pstate, BIOS имеет некоторое мнение о тактовой частоте, и кажется, что это является источником колебаний.
Вы можете принудительно отключить pstate, добавив
intel_pstate=disable
аргументы ядра (отредактируйте/etc/default/grub
и добавьте аргумент вGRUB_CMDLINE_LINUX_DEFAULT
. Наконец, запуститеsudo update-grub
).После этого выходные данные
cpufreq-info
выглядят очень по-разному, и я также заметил, что стал доступен другой набор контроллеров ЦП (напримерondemand
, теперь доступен).Самое главное, что после установки регулятора
performance
тактовая частота теперь фиксирована (в моем случае 4,00 ГГц).Вы можете посмотреть,
/sys/devices/system/cpu/cpu*/cpufreq/scaling_driver
чтобы определить, используется ли pstate или ACPI для масштабирования ЦП. Эти файлы могут принимать значенияacpi-cpufreq
илиintel_pstate
.источник
[1] https://www.kernel.org/doc/Documentation/cpu-freq/intel-pstate.txt
источник
intel_pstate=disable
к ядру? Когда я это делаю, я использую "режим наследства"?Intel Architectures Software Developer's Manual.
2) да. PS. Вы также можете поиграть сx86_energy_perf_policy
Я читал эту ветку, потому что я слишком старался установить фиксированную частоту для моего процессора, так как вентилятор больше не работает (конечно, такие вещи случаются, когда вы находитесь за границей на потерянном острове для дайвинга!), поэтому моя точка зрения была больше, чтобы установить самая низкая частота (800 МГц) .. я, наконец, преуспел, внеся изменения в scaling_max_freq в / sys / devices / system / cpu / cpu * / cpufreq / для каждого процессора конфигурации, и теперь все нормально, частота должна переместиться с 800 МГц до .... 800 МГц. Это работает и решило проблему перегрева, с которой я сталкивался ... (частота теперь 799 МГц и не двигается, что позволило процессору оставаться на уровне около 50 ° C!)
PS: я также отключаю турбо режим (3,1 ГГц)
источник