Попытка решить проблему троттлинга Raspberry Pi
У меня есть два мини компьютера Raspberry Pi. Они являются центром умного дома в квартире и на даче.
Эти два компьютера очень похожи друг на друга. Одинаковая плата (Raspberry Pi 3B+), одинаковый корпус, они все время включены. На них работает один и тот же софт (Home Assistant), но с разными настройками.
Совершенно случайно обнаружил что она и та же операция на этих двух компьютерах выполнялась сильно разное время. (Не очень важно что это за операция, но если интересно — это была наливка ansible плейбука)
На компьютере на даче операция выполнилась где-то за минуту, а дома — около 6 минут. Есть некоторые различия в том что выполнялось на этих двух компьютерах, но эти различия не должны приводить к такой значительной разнице во времени выполнения.
Я когда-то слышал что в некоторых ситуациях Raspberry Pi может делать «throttling». Т.е. если компьютеру фигово, то он работает не на полную мощность, а понижает частоту процессора.
Одни из причин почему Raspberry Pi может понижать температуру процессора — это температура. Нашел в документации что для Raspberry Pi 3 B+ температура включения throttling — это 60°C.
У меня в Home Assistant пишется температура Raspberry Pi, поэтому можно посмотреть на графики. Вот данные за два дня.
На даче Raspberry Pi находится в неотапливаемом помещении, и это помогает поддерживать низкую температуру (и видно как температура окружающей среды влияет на температуру компьютера — днем температура выше чем ночью). На графике Raspberry Pi дома видно что температура близка к 60°C и иногда даже чуть-чуть больше.
Сейчас у меня нет никакого охлаждения Raspberry Pi. Просто плата в корпусе. Я специально для своих Raspberry Pi купил пассивные радиаторы и кулеры, но не ставил их. Пожалуй, уже пора установить пассивные радиаторы.
Графики это хорошо, но хочется найти подтверждения что действительно включается throttling (где-нибудь в логах или еще как-нибудь). Пошел читать в интернете. Оказалось, что для Raspberry Pi есть специальная команда которая может ответить на этот вопрос. Нужно набрать в консоли:
Запускаю на даче:
Такс. Числа разные. Что это такое и как интерпретировать? Если в выводе команды написано «throttled=0x0» — это означает что все отлично. Троттлинг не включается. А вот если там находится другое число, то что-то работает не оптимально.
Как понять что было? Нужно число (в моем случае это 0x50005) перевести в двоичный формат. Это шестнадцатеричное число, в двоичном представлении это:
Каждый бит из этого числа что-то означает (данные из документации):
- 0 — Under-voltage detected
- 1 — Arm frequency capped
- 2 — Currently throttled
- 3 — Soft temperature limit active
- 16 — Under-voltage has occurred
- 17 — Arm frequency capping has occurred
- 18 — Throttling has occurred
- 19 — Soft temperature limit has occurred
В том числе, которое я получил, 0x50005, возведены биты:
- 0 — Under-voltage detected — т.е. прямо сейчас нехватает питания
- 2 — Currently throttled — т.е. прямо сейчас происходит троттлинг
- 16 — Under-voltage has occurred — т.е. с момента включения была ситуация когда не хватало питания
- 18 — Throttling has occurred — т.е. с момента включения была ситуация когда происходил троттлинг
Из вывода команды все стало понятно. Проблема не в том что железо перегревается, а что блок питания не выдает нужную мощность.
Сейчас у меня Raspberry Pi подключен через блок питания на котором написано «Выходные характеристики: «4.75-5.25В; 2100мА»:
Я попробовал еще два блока. Результат точно такой же. Команда «vcgencmd get_throttled» говорит что работает троттлинг. После того как я попробовал эти блоки питания я прочитал что на них написано. У обоих заявленные характеристики одинаковые.
Блок питания для китайской розетки «5V 1000mA»:
И Apple блок питания «5V 1A»:
На этом закончился запас блоков питания который был у меня дома.
На даче Raspberry Pi воткнут в блок питания который шел в комплекте со старыми iPhone — пузатый такой. Вроде бы бывают два варианта таких блоков питания. 5.1V 2.1A и 5.2V 2.4A. Не уверен какой там установлен.
Официальный блок питания Raspberry Pi выдает 5.1В 2.5А.
И на этом история пока заканчивается. Пока у меня нет другого блока питания чтобы заменить тот с которым есть проблема.
Но есть еще один интересный момент. С помощью команды vcgencmd можно узнать тактовую частоту с которой работает процессор. Вот результат с моей Raspberry Pi, которая находится дома:
Это цифра означает 600 Мегагерц. Raspberry Pi работает в режиме троттлинга, и я совершенно не удивился этому результату.
Но когда я запускаю эту же команду на Raspberry Pi на даче мне иногда показывается:
1.4 гигагерца. Ожидаемо. Но! Иногда Raspberry Pi на даче так же показывает 600 мегагерц. Один запуск показывает одно, другой другое.
Малина не находится в режиме троттлинга, но все равно иногда работает на пониженной частоте.
Как я решил проблему перегрева Raspberry Pi 4. Видео
Данный материал является дополнением к нашему видео про перегрев Raspberry Pi 4 model B.
Видео
Скрипт для тестирования
Для тестирования использовался следующий Bash-скрипт.
Установка sysbench
Для установки sysbench выполните в терминале команду:
Тест Raspberry Pi 4 без охлаждения
Результаты запуска теста на Raspberry Pi 4 model B. Плата без какого-либо охлаждения. Корпус отсутствует.
В таблице показана температура процессора, получаемая утилитой vcgencmd.
Первая строка таблицы — температура до запуска теста (без нагрузки).
Каждая следующая строка — после очередного прогона утилиты sysbench.
Без охлаждения | |
---|---|
53℃ | |
69℃ | |
71℃ | |
74℃ | |
77℃ | |
77℃ | |
79℃ | |
81℃ | |
80℃ | |
80℃ | |
80℃ |
Когда температура процессора достигла 80℃ , начался троттлинг . Процессор начал пропускать такты, чтобы предотвратить дальнейшее повышение температуры.
ICE Tower
Проблему перегрева я решил с помощью вентилятора — ICE Tower . Это кулер с радиатором, дизайн которого разработала компания 52Pi.
По меркам Raspberry Pi он огромный.
Во время работы ICE Tower светится различными цветами, которые плавно переливаются и сменяют друг друга.
Установка и сборка ICE Tower довольно простая. В комплекте есть все необходимое и пошаговая инструкция с фотографиями.
В нашем видео мы показываем шаги сборки.
Вентилятор подключается к разъему GPIO. Красный провод — на питание 5V. Черный — на Землю (Ground).
Также допускается подключение красного провода на питание 3V.
Цена высокая. Около 20$.
Тест Raspberry Pi 4 с ICE Tower
Результаты запуска теста на Raspberry Pi 4 model B с установленным ICE Tower.
Без охлаждения | ICE Tower | ||
---|---|---|---|
53℃ | 34℃ | ||
69℃ | 42℃ | ||
71℃ | 42℃ | ||
74℃ | 43℃ | ||
77℃ | 44℃ | ||
77℃ | 43℃ | ||
79℃ | 43℃ | ||
81℃ | 44℃ | ||
80℃ | 44℃ | ||
80℃ | 44℃ | ||
80℃ | 43℃ |
Из таблицы видно, что без нагрузки (первая строка таблицы) температура процессора с установленным ICE Tower — около 34℃ . Во время тестов температура не превысила 44℃ .
Температура процессора под нагрузкой с установленным ICE Tower меньше, чем температура процессора без нагрузки при отсутствии какого-либо охлаждения.
Разработчик «малинки»: нет, ваш Raspberry Pi 3 не будет перегреваться
Разработчики Raspberry утверждают, что большинство пользователей Raspberry Pi 3 Model никогда не увидят температуру в 100C, показанную недавними тестами
Ибен Аптон за работой
На Geektimes недавно публиковалась информация о том, что термосъемка Raspberry Pi 3 показала нагрев до 101,3ºC (без использования GPU). Автор этого теста на основе полученных данных делал вывод, что Raspberry Pi 3 вовсе не так хорош, как принято считать. В Сети до сих пор ведется активное обсуждение этой ситуации.
К дискуссии присоединился и один из разработчиков мини-ПК Ибен Аптон. Он утверждает, что при обычной работе с Raspberry Pi 3 никакого перегрева не будет. Аптон говорит, что тест, использовавшийся при термосъемке, является синтетическим, на самом деле «малинка» не будет вести себя подобным образом при обычной работе. «При обычной работе я бы сказал, что никогда», — прокомментировал ситуацию Ибен Аптон.
В тесте процессор загрузили почти на 100%, запустив тест на вычисление простых чисел. В нормальной работе мини ПК подобные нагрузки просто невозможны, и температура никогда не будет подниматься до предела, зафиксированного при проведении указанного теста. Что касается повышения температуры в тесте, это явление обусловлено тем, что в Raspberry Pi 3 установлен в 10 раз более производительный процессор, чем в Raspberry Pi 1.
При слабой загрузке процессор мини ПК работает с частотой в 600 МГц. В периоды сильной нагрузки на процессор частота возрастает до 1,2 ГГц. Если заставить процессор работать с такой нагрузкой в течение долгого времени, система начинает нагреваться. Но при достижении температуры в 80С процессор Pi 3 начнет «сбрасывать обороты», частота работы снизится, и тепло начнет рассеиваться. Если температура возрастет до 85С, процессор снизит рабочую частоту до 600 МГц.
Стоит напомнить, что Raspberry Pi 3 работает с 64-битным процессором с архитектурой ARM Cortex A53, тогда как в Pi 2 установлен 32-битный процессор. Основой Pi 2 является процессор ARM Cortex A7. Новый процессор тоже четырехьядерный, как и у второй «малинки», но он более быстрый. Как уже говорилось, его пиковая частота — 1,2 ГГц, что на 300 МГц больше, чем у Pi 2.
Свежезамороженный Raspberry Pi
Доброго времени суток, дорогие товарищи!
Думаю многие владельцы гаджета, указанного в топике, либо испытывали проблему перегрева, либо хотя бы просто интересовались ею. То есть найти информацию о том, до какой максимальной температуры можно нагреть плату, не составляет труда. Однако, наше высокое начальство поставило перед нами немного другую задачу — поместить «малину» на открытый воздух в условиях крайнего севера, да чтобы она еще и работала стабильно. Как мы издевались над бедным произведением товарищ англичан, прошу под кат.
Исходные данные
Итак, что мы имеем?
- Raspberry Pi Model B
- Камера тепла-холода Espec Corp PG-2J
Задание: Посмотреть, как будет себя вести Raspberry Pi при больших отрицательных температурах.
Сразу оговорюсь, для нас главными критериями работы были хоть какая-то активность ЦП, работа с сетью и живость GPIO.
Предполетная подготовка
Подготовка к измывательствам была минимальной. В качестве операционной системы воткнули ArchLinux, настроили сеть, да подоткнули IDE шлейф с воткнутым светодиодом. Управление и сбор данных решили сразу проводить по сети, поэтому по быстрому был настроен SSH доступ. Питание платы на коленке подвели от внешнего источника питания, подпаявшись к старым USB гнездам.
Затем все это чудо было помещено в камеру, кабеля закинуты через специально обученную дырку.
Заранее прошу прощения за ужасное качество фотографий. Фотограф во мне умер и начал разлагаться.
Методика «испытаний»
Так как все делалось на коленке, то и методика придумывалась на ходу. Когда камера фиксировала указанную ей температуру, мы снимали температуру на CPU при помощи встроенного датчика, замеряли время, затрачиваемое на выполнение одной и той-же операции ( измывательства над строками в Python ), замеряли температуру снова. Затем давали плате остыть, проводили подобные-же замеры, используя программу stress с таймаутом в 30 секунд. Ну и на сладкое моргали светодиодом. Отчеты скидывались в примонтированную папку. Затем температура понижалась и все начиналось по новой.
Результаты
Я не буду описывать то, как шел этот изврат. Скажу только то, что мы думали, что при температуре в -40 хоть что-то да откажет. Ничего подобного. Порог -40 «малина» преодолела, даже не поперхнувшись и сумев ничего от себя не отвалить. Дальше уже просто пошел спортивный интерес и мы догнали температуру до -70. Думаете хоть что-то произошло? «Малина» как пыхтела себе, так и пыхтела. Светодиод исправно моргал, данные в сеть лились.
Кому интересно, приведу таблицу с усредненными показаниями температуры CPU без нагрузки на разных температурах.
Под нагрузкой температура увеличивалась не более чем на 1,5 градуса.
Теперь насчет производительности. Время выполнения операции не менялось нисколько. Абсолютно.
Выводы
В итоге, единственный вывод, который мы сделали, что если защитить плату от влаги, то выбрасывать ее на улицу даже в лютые морозы можно без зазрения совести.
После драки кулаками машут
В общем, когда мы задорно радовались тому, что при -70 «малина» работает как часы, мой коллега предложил попробовать убить плату, отключив от нее питание, дать ей остыть до -70 и попробовать завести. Что и было сделано. Но и тут «малина» нас уделала. Она спокойно завелась, загрузила ось и вышла в сеть. Кстати, именно тогда мы пронаблюдали самую низкую температуру -58,9