Top.Mail.Ru

Как разогнать Raspberry Pi 4 Model B.

Пришло время ответов на часто задаваемые вопросы, и один из топовых в данном случае касается overclocking'а, то есть разгона Raspberry Pi. Операции и манипуляции я буду проводить на Raspberry Pi 4 Model B 8GB, но основные аспекты и идеи справедливы и для других модификаций. Переходим непосредственно к сути вопроса...

Но сначала небольшое, но обязательное предупреждение. Заключается оно в том, что любые действия подобного рода, переводящие то или иное оборудование в режимы, официально не предусмотренные, могут повлечь за собой ряд побочных эффектов ) Среди которых - потеря гарантии на плату, банальный выход из строя (в основном это происходит при отсутствии должного охлаждения) и тому подобные нежелательные события. Так что действовать нужно обдуманно и в меру осторожно. На этом с обязательной частью покончено, двигаемся дальше.

Подготовка.

Итак, зачем вообще разгонять Raspberry Pi? Ответ банален - есть задача, производительности для ее решения не хватает - вот и вся причина. Почему плата изначально, с завода, не работает на пределе своих возможностей? Не в последнюю очередь из-за того, что конструктивно не предусмотрено должного охлаждения. Собственно, поэтому первый шаг - озадачиться либо подготовкой внешнего кулера, либо установкой дополнительных радиаторов. Здесь все индивидуально, в идеале необходимо по крайней мере какое-то время мониторить температурное состояние процессора и других элементов, чтобы иметь в целом представление о происходящем.

Помимо повышенной вероятности выхода платы из строя отсутствие должного охлаждения имеет и еще один негативный эффект. Процессор при перегреве банально уйдет в троттлинг, что предполагает по сути искусственное занижение производительности во избежания перегрева. И по итогу, разогнанный, но перегретый процессор, будет иметь меньшую производительность, чем изначальный вариант, до разгона. Такие вот дела.

Я сейчас использую банальнейший кулер с Озона, использовался он изначально для другого проекта, но по мере необходимости нашел свое место по соседству с Raspberry Pi:

Но у меня сейчас идет активная отладочная деятельность, поэтому все это находится на столе, соответственно найти 12 Вольт для питания кулера - не проблема. Я просто зацепил его на стоящий тут же рядом источник питания:

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

Сердцем Raspberry Pi 4 является процессор BCM2711 от Broadcom, который может спокойно работать на частотах выше, чем дефолтные 1.5 GHz. Так что дело за малым - осуществить желаемое 👍

Overclocking.

Резюмируем вводные данные, опять же, это мой текущий набор элементов, суть процессов будет похожей и для других вариантов:

  • плата Raspberry Pi 4 Model B
  • охлаждение, описано выше
  • операционная система - Raspberry Pi OS (64-bit)
    • Release date: May 3rd 2023
    • System: 64-bit
    • Kernel version: 6.1
    • Debian version: 11 (bullseye)
  • питание - Official Raspberry Pi 4 Power Supply, 5.1В, 3A
  • монитор у меня подключен по hdmi
  • клавиатура/мышь

Я перешел на официальное питание, поскольку Raspberry Pi 4 является даже еще более нежной, чем предыдущие версии, чуть что, так начинаются проблемы. На этом вроде бы все... И для начала разберем непосредственно механизмы разгона, а затем произведем ряд измерений и тестов для наглядной оценки.

Шаг 1. Актуализируем ПО.

Начинаем с того, что обновимся, если это не сделано ранее:

sudo apt update -y
sudo apt upgrade -y

В случае желания или необходимости:

sudo apt dist-upgrade
sudo apt install rpi-update

В завершение перезапустимся:

sudo reboot

Шаг 2. Редактируем /boot/config.txt.

Переходим к редактированию файла /boot/config.txt. Я обычно пользуюсь редактором gedit, само собой использовать можно и любой другой. Физически задача проста - внести изменения в упомянутый файл. Открываем:

sudo gedit /boot/config.txt

В этом файле нужно найти закомментированную строку #arm_freq=800, раскомментировать ее и редактировать непосредственно здесь же. А редактирование будет включать в себя следующее:

  • arm_freq - собственно, здесь мы устанавливаем максимально допустимую частоту для процессора
  • аналогично, для GPU нужно добавить и в дальнейшем редактировать gpu_freq. Измерение этого параметра автоматически влечет за собой изменение: core_freq, h264_freq, isp_freq, and v3d_freq. То есть задавать их отдельно в данном случае необходимости нет
  • а также необходимо отрегулировать напряжение CPU/GPU посредством редактирования величины over_voltage.

Резюмируем, нам нужно добавить в файл строки следующего вида:

over_voltage=6
arm_freq=2147
gpu_freq=750

Здесь я установил передельные относительно безопасные значения для Raspberry Pi 4 Model B, которых в большинстве случаев бывает достаточно для ощутимого эффекта от разгона. А, если в целом говорить о значениях, то:

  • arm_freq - значение частоты в МГц
  • gpu_freq - здесь также значение частоты в МГц
  • over_voltage - допустимы значения от -16 до 8. Этим значениям параметра соответствуют напряжения от 0.8 до 1.4 В с шагом 0.025В, проще говоря:
    • -16: 0.8 В
    • -15: 0.8 В + 0.025 В = 0.825 В
    • ...
    • 0: 1.2 В
    • ...
    • 8: 1.4 В

Сохраняем файл, перезапускаем плату и получаем разогнанный вариант, к чему мы и стремились. Но на этом еще далеко не все.

Шаг 3. Форсируем.

По умолчанию плата не будет всегда работать на максимальных частотах, которые мы задали. Частоты будут меняться динамически в зависимости от текущей нагрузки. А чтобы изменить это поведение, то есть буквально заставить Raspberry Pi крутиться на максималках всегда, существует еще одна опция, также помещаемая в /boot/config.txt:

force_turbo=1

И итоговый вариант:

over_voltage=6
arm_freq=2147
gpu_freq=750
force_turbo=1

В файле /boot/config.txt это выглядит так:

Файл конфигурации.

Теперь динамическое регулирование частот отключено и плата будет работать на указанных значениях даже при малой нагрузке. Перезапускаемся, и дело сделано. Но, конечно же, мы не завершим эту тему, не протестировав все и досконально не проанализировав. Так что продвигаемся к практической части.

Тестируем.

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

Тест 0. Подготовка.

Собственно, что мы хотим? А хотим мы мониторить в реальном времени, во-первых, температуру, а во-вторых частоту процессора. Этим целям послужат команды:

watch -n1 vcgencmd measure_temp
watch -n1 vcgencmd measure_clock arm

Запускаем в разных окнах и наблюдаем, далее без лишних слов приведу полученные значения.

Тест 1. Плата до разгона, без внешнего охлаждения.

Температура и частота до разгона

Тест 2. Плата до разгона, с внешним охлаждением.

С внешним охлаждением

Все эти значения могут варьироваться в зависимости от внешних условий, главное динамика.

Тест 3. Плата после разгона, с внешним охлаждением.

Overclocking

Как видите, частота повышена в соответствии с нашей конфигурацией в /boot/config.txt.

Тест 4. Производительность до разгона.

Для теста производительности используем sysbench, устанавливаем в случае отсутствия:

sudo apt install sysbench

Далее запускаем:

sysbench --num-threads=8 --test=cpu --cpu-max-prime=20000 run

И получаем результат:

sysbench default

Тест 5. Производительность после разгона.

А теперь аналогичные действия но на overclock-версии:

sysbench overcloked

Собственно, можем наглядно наблюдать, что результат действительно соответствует ожиданиям. Для возврата Raspberry Pi в исходное состояние просто спокойно убираем добавленные в /boot/config.txt строки и перезапускаем плату, на этом все готово.

Что делать, если плата не запускается в результате манипуляций с /boot/config.txt? Решение таково:

  1. извлекаем карту памяти из платы
  2. вставляем эту карту в "обычный" ПК
  3. заходим в "boot" и находим файл config.txt
  4. редактируем файл, то есть возвращаем к тому состоянию, при котором с запуском платы проблем не было
  5. сохраняем файл, извлекаем карту, возвращаем ее в Raspberry Pi
  6. успешно запускаемся

Ну и продублирую предупреждение, так уж принято. Любые действия подобного характера (то есть переводящие оборудование в непредусмотренные изначальной конструкцией режимы) осуществляются на свой страх и риск по причинам, указанным в тексте статьи, поэтому MicroTechnics в лице меня не несет ответственности за возможные последствия, уж не обессудьте 🙂

Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x