Christopher Stanton, element14
Не так давно на нашем портале была опубликована довольно интересная статья «Сравнение популярных Linux-платформ для встраиваемых приложений», в которой на основе выполнения тестов и измерений мы дали оценку производительности и возможности применения той или иной платы в пользовательских устройствах или приложениях. В феврале 2016 г. компании RS Components и element14 анонсировали следующее поколение популярного одноплатного компьютера - Raspberry Pi 3 Model B. Несмотря на то, что габаритные размеры и цена остались неизменными, плата получила мощный 64-разрядный процессор и интерфейсы беспроводной передачи данных Wi-Fi и Bluetooth.
![]() |
|
Рисунок 1. | Одноплатный компьютер Raspberry Pi 3. |
В связи с этим для многих разработчиков и любителей будет интересным более подробно узнать о вычислительных ресурсах и реальной производительности Raspberry Pi (RPi) 3 в сравнии с предыдущими моделями.
При подготовке отчета по производительности RPi3 мы использовали большой набор программных тестов из коллекции Роя Лонгботтома, которые выполнялись на аппаратном уровне. Кроме того, мы предоставим некоторую информацию по энергопотреблению в режиме ожидания. Сразу отметим одну техническую особенность: в тестах производительности мы хотели задействовать драйвер OpenGL, который доступен в последней версии операционной системы (ОС) Raspbian, но используемые программные тесты на данный момент несовместимы с ним. Тем не менее, графический процессор VideoCore является частью ARM процессора, который практически не изменился с момента выпуска самой первой модели RPi.
Информация о процессоре
Итак, для нашего подробного сравнительного анализа производительности было выбрано три модели одноплатного компьютера Raspberry Pi (Таблица 1).
Таблица 1. Одноплатные компьютеры Raspberry Pi, участвующие в тестировании. | ||||||||||||||||
|
Во всех трех модификациях плат RPi оперативная память работает на тактовой частоте 400 МГц. Небольшое отличие состоит в том, что RPi 3 имеет 64-разрядный ARMv8 процессор, однако, ОС Raspbian на момент проведения тестов не имеет 64-битной поддержки. Отчасти это связано с обратной совместимостью RPi 3 с предшествующими моделями. ОС Debian в течение последних лет наращивает свою поддержку 64-битных систем и, возможно, в скором времени появится сборка Jessie Debian с 64-битной поддержкой для RPi 3.
Перед тем как начать тестирование и сравнительный анализ мы решили выполнить несколько команд в ОС, чтобы получить более подробную информацию о процессоре и поддерживаемых инструкциях (Таблица 2).
Таблица 2. Результат выполнения команды cpuinfo. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
При выполнении команды cpuinfo на плате RPi, процессор идентифицируется как ARMv7, что может свидетельствовать о программной ошибке, и после обновления ядра/прошивки процессор будет определяться корректно, как ARMv8. Новинкой во встроенном функционале процессора RPi 3 является блок CRC32.
Таблица 3. Результат выполнения команды lscpu. | ||||||||||||||||||||||||||||||||||||||||||||||||
|
С помощью команды lscpu (Таблица 3) мы тоже наблюдаем некорректную идентификацию процессора RPi 3, но при этом мы видим, что процессор RPi 3 может выполнять масштабирование тактовой частоты (что можно дополнительно подтвердить командой lshw), также как RPi 2. Также теперь мы ясно видим, что RPi2 и RPi 3 работают под управлением четырехядерного процессора.
Вы можете самостоятельно запустить эти команды на своей плате RPi с ОС Raspbian, запущенной в терминальном режиме или в графическом интерфейсе в окне терминала. Для установки cpuinfo и lscpu необходимо выполнить следующие команды:
sudo apt-get update
sudo apt-get install lscpu cpuinfo lshw
Энергопотребление
Энергопотребление плат в режиме ожидания (простоя) мы измеряли с помощью простого, но удобного гаджета – USB-тестера (Рисунок 2). Данное устройство подключается между источником питания и потребителем и позволяет измерить напряжение, потребляемый ток и мощность. Оно вполне подойдет для наших целей.
![]() |
|
Рисунок 2. | USB-ампервольтметр для измерения энергопотребления Raspberry Pi. |
Каждая плата RPi была сконфигурирована на загрузку в терминальном режиме, графический пользовательский интерфейс (Окно X) не загружался. К плате были подключены только 19'' широкоформатный монитор через адаптер HDMI-DVI, клавиатура Dell, карта памяти microSD 16 Гбайт 10 класса и блок питания 5 В/2 А. Сетевой интерфейс при этих измерениях не задействован, хотя мы можем заметить, что при активном Ethernet-подключении энергопотребление плат возрастало. Как видно, энергопотребление RPi 3 в режиме простоя несколько больше, чем у предшественников. Это, скорее всего, связано с тем, что интегрированный Wi-Fi адаптер находился в активном состоянии, без подключения к какой-либо точке доступа. Адаптер Bluetooth 4.1 неактивен, ввиду того, что не загружались какие-либо драйверы или ПО, использующее его.
Таблица 4. Энергопотребление плат Raspberry Pi. | ||||||||||||||||||
|
Тест SysBench
SysBench – модульный, кроссплатформенный и многопоточный программный инструмент, который позволяет быстро получить представление о производительности системы. Изначально он был предназначен для сравнительного анализа файловых операций ввода/вывода и операций с базами данных. Благодаря открытому исходному коду он постепенно превратился в инструмент всестороннего теста системы, включающего в себя тест процессора, подсистемы файлового ввода/вывода и баз данных.
Тестирование процессора в SysBench заключается в вычислении простых чисел. Это означает, что он не проверяет все возможности процессора. Результаты приведены в Таблице 5 и 6.
Тест запускался со следующими параметрами:
sysbench --num-threads=1 --test=cpu --cpu-max-prime=20000 --validate run
sysbench --num-threads=4 --test=cpu --cpu-max-prime=20000 --validate run
где:
- sysbench – имя программы для выполнения;
- --num-threads – число потоков, в которых будут выполняться вычисления. Тест мы запускали с 1 и 4 потоками, это означает, что мы создаем 1 или 4 процесса и запускается 1 процесс для каждого ядра. Так как RPi B+ выполнено на одноядерном процессоре имело смысл запустить тест на одно ядро на каждой модели;
- --test=cpu – параметр указывает, что мы будем проверять производительность процессора;
- --cpu-max-prime – максимальное значение простого числа, которое мы хотим вычислить;
- --validate – параметр гарантирует корректность результата;
- run – программа может провести эмуляцию, вместо того чтобы реально выполнить указанный тест, поэтому данным параметром мы запускаем тест на выполнение.
Таблица 5. Результаты теста SysBench (однопоточные вычисления). | ||||||||||||||||||||||||||||
|
Результат по общей скорости выполнения теста (Total time) показывает разницу на 94% при сравнении платы RPi 3 с RPi B+ и на 47% в сравнении с RPi2. Наибольший интерес в результатах теста представляет разница между минимальным и максимальным значением времени выполнения запросов (diff between min and max). RPi 3 показывает прирост скорости выполнения на 194% по отношению к первой модели и на 88% в сравнении с RPi 2. Именно по этому параметру видно, что RPi 3 выполняет запросы намного быстрее.
Таблица 6. Результаты теста SysBench (4 потока). | ||||||||||||||||||||||||||||
|
Тест с 4 потоками вычислений является немного несправедливым по отношению к RPi B+, имеющей одноядерный процессор, поэтому не удивительно, что общее время выполнения теста на ней слишком велико. Плата RPi 2 в этом тесте при работе со всеми 4 ядрами немного сократила разрыв, хотя RPi 3 продолжает опережать на 75% по разнице между минимальным и максимальным временем обработки запросов. В целом разница в общей скорости выполнения теста сохранилась на уровне 47%.
В целом, на данном этапе RPi 3 выходит на первое место, хотя было бы интересно взглянуть на результаты данного теста в условиях "разогнанной" RPi 2. Тем не менее, нужно помнить, что вычисление простых чисел не является единственной функцией процессора.