Рейтинг:-1

Как я могу заставить свой ЦП работать на максимальной скорости, обходя масштабирование ЦП?

флаг sa

Я использую CentOS 7 (7.9.2009) (ядро 3.10.0-1160.49.1.el7.x86_64) на довольно старом ноутбуке (Lenove T61) с двухъядерным процессором (Intel(R) Core(TM)2 Duo CPU). T7300 @ 2,00 ГГц). Драйвер для масштабирования ЦП — acpi-cpufreq, и при спектакль Губернатор, я могу заставить ЦП работать на максимальной скорости ЦП, как указано в /sys/устройства/система/процессор/cpufreq/policy0/cpuinfo_max_freq, и наблюдайте за этим, выполнив:

$ grep -i МГц /proc/cpuinfo 
процессор МГц: 2001.000
процессор МГц: 2001.000

и он устойчив на этой скорости. Я могу проверить это, выполнив:

$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
2001000
$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq 
2001000

Я пытаюсь работать с постоянной частотой для программы реального времени, которая подсчитывает тактовые циклы процессора для синхронизации. Я скомпилировал специальное ядро ​​(5.10.83-rt58) для поддержки оборудования, которое не поддерживается в ядре CentOS по умолчанию (3.10.0). Масштабирование ЦП обычно вызывает скачки тактовой частоты, но я обнаружил, что могу получить постоянную частоту, установив все значения в /sys/устройства/система/процессор/процессор*/процессор/состояние*/отключить к 1. Когда я проверяю частоту:

$ grep -i МГц /proc/cpuinfo 
процессор МГц: 1995,106
процессор МГц: 1995,106

это не совсем так на частоте 2001 МГц, как в ядре 3.10.0. Следующая команда проверяет это:

$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
1995106

Но вывод:

$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
2001000

это отличается. Мой вопрос: кто-нибудь знает, почему мой процессор работает не на максимальной частоте (2001 МГц), а на ~ 6 МГц меньше? Что-то радикально изменилось в масштабировании процессора между ядром 3.10 и 5.10?

Paul Gear avatar
флаг cn
Этот вопрос лучше задать в [Super User](https://superuser.com/).
Рейтинг:1
флаг cn

Я пытаюсь запустить программу реального времени с постоянной частотой. который подсчитывает тактовые циклы процессора для синхронизации.

Такой подход проблематичен, т. современные процессоры масштабирования производительности не будут работать на одной частоте. Их точное количество циклов зависит от тепловых условий. Возможно, ваша розетка немного неисправна. И ваше пользовательское ядро ​​​​может иметь произвольные отличия от ядра Red Hat, поэтому да, возможно, оно (или микрокод) по-разному воздействует на процессор.

Используйте предоставленные API таймера. Linux в реальном времени обрисовывает в общих чертах базовое циклическое приложение. Обратите внимание на использование clock_nanosleep() с CLOCK_MONOTONIC.

Справочник по программированию времени ESR это достойная история того, почему существует несколько десятков функций времени.


Чтобы настроить регуляторы ЦП и другие настройки по причинам задержки и энергопотребления, загляните в файлtuned. Например, профиль задержки-производительности.

Mitch avatar
флаг sa
Спасибо за ответ, очень проницательный, но «современные процессоры для масштабирования производительности не будут работать на одной частоте» неправда, я могу заставить свой процессор работать на постоянной частоте 2001 МГц, используя ядро ​​​​3.10. У меня есть другие машины с CentOS7 (процессор Intel Core I5), и я могу получить ядро ​​​​3.10 для работы процессора на постоянной частоте. Я чувствую, что для этого может быть флаг ядра или что-то еще, о чем я не знаю, так как я не эксперт по ядру.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.