Ограничение использования процессора равномерно

1706
devil0150

У меня есть программа, и я хочу измерить время ее выполнения на основе входных данных, но моя система устарела и имеет проблемы с перегревом. Если программа работает с полной загрузкой процессора в течение примерно 1 минуты, она обычно переходит в режим гибернации или отключается от перегрева.

Я ищу что-то, чтобы ограничить использование процессора. Я посмотрел на cpulimit, но он работает, останавливая и продолжая программу несколько раз. Как это будет работать в этом случае? Будет ли это оценка запуска программы на более медленном процессоре, или это повредит результаты синхронизации?

Есть ли какое-то другое программное обеспечение, которое более равномерно ограничивает использование процессора?

0
Попробуйте [cgroups] (https://en.wikipedia.org/wiki/Cgroups). gronostaj 7 лет назад 0

1 ответ на вопрос

1
Xen2050

Похоже, вы хотите ограничить скорость или частоту вашего процессора. Ядро Linux должно быть в состоянии сделать это, если ваш процессор поддерживает его, вы можете сделать так, чтобы он работал только до более низкого максимума. Например, если ваш процессор обычно работает на частоте 1, 2 или 3 ГГц, вы указываете, что он работает только на частоте 1 или 2 ГГц, и он должен оставаться намного холоднее, чем на частоте 3 ГГц.

Вы можете использовать интерфейс sysfs / procfs напрямую, но использовать cpufreqего, вероятно, гораздо проще. В Debian / Ubuntu пакет называется cpufrequtils, вот его поиск в пакете Ubuntu .

При запуске cpufreq-infoдолжна быть указана информация о доступных процессорах, а также частотах и ​​регуляторах, а также о том, «работает ли процессор на одной аппаратной частоте» или «необходимо ли координировать их частоту с помощью программного обеспечения».

Например, чтобы установить максимальную частоту cpu0 на 1,5 ГГц, вы должны выполнить:
cpufreq-set --cpu 0 --max 1.5GHz

Различные регуляторы и параметры определяют, когда нужно ускорить и замедлить процессор, если установить их как «неправильные», процессор может казаться, что он никогда не хочет ускоряться или никогда не хочет замедляться, но в целом я думаю, что консервативный регулятор лучше, чем регулятор по требованию (обычно он используется по умолчанию и, кажется, ускоряется, если в последнее время вы даже смешно смотрите на свой компьютер ;-) Например, эта команда говорит консервативному регулятору замедляться, если процессор занят только на 50%:
echo 50 | sudo tee /sys/devices/system/cpu/cpufreq/conservative/down_threshold


И, конечно, я подозреваю, что что-то не так с вашим компьютером. Это не должно быть отключено, как это.

  • Ворс блокирует вентилятор и воздушный поток? Вентиляционные отверстия заблокированы?
  • Вентилятор работает на полной скорости или работает вообще?
  • Правильно ли установлен радиатор или поврежден?

Это действительно отключение от перегрева процессора (журналы поддерживают его), или блок питания сдается / перегревается?

Повлияет ли это только на программу или весь процессор? Если у меня есть несколько ядер, все они? devil0150 7 лет назад 0
cpufreq ограничивает каждое ядро ​​процессора в отдельности, одно ядро ​​может работать на полной скорости, а другое - медленнее (если ваше ядро ​​процессора поддерживает это). Все работающее будет «равномерно» ограничено, если все ядра имеют одинаковое ограничение, я не уверен, как ядро ​​выбирает, какой процесс и на каком ядре запускать, если они работают на разных скоростях. Xen2050 7 лет назад 0

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