[Из песочницы] Диапазон рабочих температур Raspberry Pi. Результаты тестов
Постановка задачи
Популярный одноплатный компьютер Raspberry Pi применяется в различных промышленных приложениях [3] и находит все новые применения. В сети довольно много информации по оценке и сравнению производительности систем [4], однако промышленные заказчики хотят знать диапазон рабочих температур. Производитель такой информации не предоставляет. Предпринятые энтузиастами испытания на воздействия внешних факторов [5, 6] решают несколько другие задачи.
Целью нашего исследования была оценка диапазона рабочих температур одноплатного компьютера Raspberry Pi. Испытаниям подвергнуты Raspberry Pi 3 Model B и Raspberry Pi 2 Model B. Во время подготовки статьи появилась новая версия Raspberry Pi 2 Model B V1.2 с процессором BCM2837, мы тестировали RPi 2 V1.1 с процессором BCM2836.
Исследования проведены сотрудниками и студентами МГТУ им. Баумана по заказу компании RS Components Russia, которая бесплатно предоставила образцы для тестирования, в рамках летней стажировки 2016 года в компании Совтест АТЕ [13].
Условия эксперимента
Большинство компонентов на платах Raspberry Pi 3 Model B и Raspberry Pi 2 Model B имеют индустриальный температурный диапазон -40℃…+85℃. Представляет практический интерес провести испытания плат в более широком температурном диапазоне от -55℃ до +110℃ и оценить границы их работоспособности.
Схема экспериментальной установки приведена на рис. 1. Одноплатные компьютеры Raspberry Pi помещались в камеру тепла-холода TCT-811. RPi 2 подключались к маршрутизатору LP-Link TL-WR720N по Ethernet, а RPi 3 — по Wi-Fi. Питание плат осуществлялось посредством USB адаптеров. Управление платами и сбор данных осуществлялись через SSH доступ с компьютера оператора.
Рисунок 1. Схема экспериментальной установки температурного тестирования
В качестве операционной системы использовалась Raspbian, как основная рекомендуемая и поддерживаемая производителем. Тестирование производительности осуществлялось при помощи утилиты SysBench — модульного, кроссплатформенного многопотокового приложения, позволяющего быстро оценить параметры системы для работы под высокой нагрузкой. Данные тестов записывались на внутреннюю память платы, а затем по запросу копировались на компьютер оператора. В качестве носителя данных была использована SD-карта памяти QUMO 32GB Class 10.
Ход эксперимента
Испытание проводились следующим образом. Платы помещались в камеру и подключались согласно схеме на рис. 1. Затем задавался алгоритм изменения температура в камере. Камера программировалась на ступенчатое повышение температуры сначала от комнатной +23℃ до +110℃, затем на быстрое охлаждение до комнатной и дальнейшее ступенчатое понижение температуры до -50℃ (рис. 2). Всего реализовано 19 этапов измерений с шагом температуры между этапами в 10℃ (Таблица 1).
Номер этапа тестирования | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
Температура в камере на этапе, ℃ | +23 | +30 | +40 | +50 | +60 | +70 | +80 | +90 | +100 | +110 | +106 | +27 | -20 | -25 | -30 | -35 | -40 | -45 | -50 |
На каждом этапе тестирования в камере сначала устанавливалась соответствующая температура, затем платы выдерживались при этой температуре в выключенном состоянии около 6 минут. Далее платы практически одновременно включались, на каждой запускался тест Sysbench, и дополнительно проводилось измерение температуры процессора. После завершения тестов платы выключались и повторно выдерживались 1–2 минуты при той же температуре, прежде чем камера переходила к следующему этапу. Скорость изменения температуры между этапами составляла примерно 1℃/мин.
Рисунок 2. Изменение температуры в камере в течении испытаний
Каждый полный этап прохождения теста Sysbench состоял из последовательного запуска трех модулей: теста процессора, теста памяти и теста потоков. Результатом работы каждого модуля Sysbench было определение времени его выполнения в секундах. Опишем подробнее каждый из тестов.
Тест процессора (--test=cpu) Sysbench использует 64х-битные целые для расчета простых чисел до значения, заданного параметром --cpu-max-primes. Так же возможно задание нескольких потоков, но мы пользовались значением по умолчанию — одним потоком.
Тест памяти (--test=threads) выделяет буфер памяти и производит операции чтения или записи. Количество данных, прочитанных или записанных за одну операцию, определяется размером указателя 32 или 64 бит. Процесс повторяется, пока не будет обработан заданный объем (--memory-total-size). Возможно задать количество потоков (--num-threads), размер буфера (--memory-block-size) и тип операции (чтение или запись --memory-oper=[read | write]).
Тест потоков (--test=memory) проверяет работу процессора в условиях большого количества конкурирующих потоков. Тест заключается в создании нескольких потоков (--num-threads) и нескольких мутексов (--thread-locks). Далее каждый поток начинает генерировать запросы, которые блокируют мутекс, исполняют процессорные задачи (для симуляции реальной работы) и разблокируют мутекс. Для каждого запроса действия блокировки-исполнения-разблокировки выполняются несколько раз, количество которых задается параметром --thread-yields.
Сокращенный текст bash-скрипта запуска модулей Sysbench с соответствующими параметрами приведен ниже:
for count in {1…5}
do
sysbench --test=cpu --cpu-max-prime=1150 run
sysbench --test=memory --memory-block-size=1M --memory-total-size=10G run
sysbench --num-threads=64 --test=threads --thread-yields=1000 --thread-locks=8 run
vcgencmd measure_temp
done
Значения температуры процессора в градусах Цельсия выводились с его встроенного датчика. Вывод показаний встроенного датчика температуры осуществлялись командой vcgencmd measure_temp.
Результаты эксперимента
Результаты тестов Sysbench приведены на рисунке 3. На каждом этапе тест Sysbench повторялся последовательно 5 раз, данные производительности усреднялись по результатам 5 тестов. Значения температуры процессора взяты максимальные из измеренных на каждом этапе.
Рисунок 3. Результаты тестов Sysbench на одноплатных компьютерах Raspberry Pi 3 и Raspberry Pi 2
На рисунке 3 видно, что картина производительности на всех трех тестах практически одинакова как для RPi 3, так и для RPi 2. В диапазоне температур от -35℃ до +50℃ плата RPi 3 работает примерно в 1,6 раза быстрее, чем RPi 2, что согласуется с результатами официальных тестов производительности [4]. При достижении температурного порога процессора, заданного в файлах конфигурации, по умолчанию это +85℃, запускается механизм защиты процессора от перегрева за счет пропуска машинных тактов — дросселирование тактов или троттлинг [8].
Компьютеры переставали запускаться при разных значениях температуры: RPi 3 при температурах выше +90℃, а RPi 2 — при температурах выше +106℃. При температурах ниже 0℃ изменения производительности у обеих плат не происходит. При температурах ниже -35℃ плата RPi 3 и температурах ниже -45℃ плата RPi 2 перестают запускаться. Как при высоких, так и при низких температурах платы возобновляли свою работоспособность после снятия нагрузки — и возвращения в рабочий диапазон температур.
Рисунок 4. Температура процессоров Raspberry Pi 3 и Raspberry Pi 2 при различной температуре окружающего воздуха в испытательной камере
Значения температуры в испытательной камере и соответствующие значения температур процессоров плат RPi 2 и RPi 3 приведены на рисунке 4. Поскольку процессор RPi 3 греется сильнее, чем процессор RPi 2, пороговая температура троттлинга +85℃ в нем достигается при +50℃ окружающей среды, в то время как RPi 2 запускает троттлинг при температуре +70℃. Поэтому в результатах тестов мы видим, что на температурах более +50℃ RPi 3 уступает RPi 2 по производительности. При этих температурах рекомендуется использовать охлаждение процессора [8].
В проведенных испытаниях платы RPi 3 запускались и работали в диапазоне температур от -35℃ до +90℃, а платы RPi 2 — от -45℃ до +106℃. Эти диапазоны близки к индустриальному диапазону температур применяемых электронных компонентов -40…+85℃.
Проведенное нами исследование не претендует на полноту и безусловность инженерных рекомендаций. На его результаты повлияли следующие условия и обстоятельства. Во-первых, проблемы вызвали SD-карты памяти, которые при работе часто давали сбои, для восстановления работоспособности карт их приходилось переформатировать и записывать образ системы повторно. Во-вторых, на сопоставимость результатов тестов RPi 2 и RPi 3 могли повлиять разные способы связи с платами: RPi 2 по Ethernet, а RPi 3 по Wi-Fi. В-третьих, параметры тестирования были выбраны таким образом, чтобы суммарное время испытаний укладывалось в период одного рабочего дня, поэтому мы не можем судить о сохранении работоспособности плат при более длительном воздействии температур. В-четвертых, испытания проводились не в сертифицированном центре и не в строгом соответствии с ГОСТ, хотя применяемая методика разработана на основе стандартов ГОСТ 28199–89 «Основные методы испытаний на воздействие внешних факторов. Часть 2. Испытания. Испытание А: Холод» и ГОСТ 28200–89 «Основные методы испытаний на воздействие внешних факторов. Часть 2. Испытания. Испытание В: Сухое тепло».
Результаты измерений и анализа относятся только к испытанным образцам и не могут быть распространены на другие изделия производителя. Результаты испытаний не могут являться основой для принятия решения в коммерческих и правовых вопросах деятельности организаций. В то же время авторы надеются, что приведенные результаты будут полезны инженерной общественности.
Павел Григорьев, МГТУ им. Баумана
2. Ермаков А. Raspberry Pi — эффективный инструмент снижения затрат при автоматизации бизнес-процессов. ИСУП.2016.№1
3. Применение Raspberry Pi и Arduino в промышленной среде
4. Тестирование Raspberry Pi 3
5. Термосъемка Raspberry Pi 3
6. Свежезамороженный Raspberry Pi
7. Троттлинг процессора или почему падает производительность
8. The Raspberry Pi 3 Does Not Halt and Catch Fire
9. Стажировка в Совтест