Raspberry Pi

Доставили мне сегодня Raspberry Pi - очень мелкий, одноплатный почти-как-настоящий компьютер. Это модель B, 512M. Как я писал у себя в твитере все вместе, включая собственно компьютер ($35), прозрачный пластиковый корпус ($18) и WiFi-Usb ($12) с шустрой доставкой и налогами обошлось в $80.

Как мне намекали - совсем недешево для компьютера, который обещали “раздавать” за $25. Справедливости ради и пластиковый корпус и WiFi можно было не покупать, подключив просто плату проводом к ethernet. Но если еще честнее, то могут быть и прочие расходы - нужна SD карточка 4G (можно и больше) и блок питания с micro–usb выходом. Оба этих компонента в хозяйстве каждого гика всегда найдутся и у меня без труда нашелся и блок питания и карта на 8G.

Про то, как прошивать карточку я рассказывать не буду (google вам в руки), но для самых ленивых можно купить готовую, со всем что надо, за $12-$15. Вы будете смеяться, но у меня этa прошивка с первого раза не задалась. Все сделал как надо, включил и получил черный экран. Минут 5 недоуменно смотрел на это, думал может оно так долго грузится. Потом решил, что мало питания и заменил эпловый адаптер на тот, что шел в комплекте к моему 4g-WiFi (там совсем суровый по току) и … ничего не починилось. Почти собрался отсылать обратно и требовать замены, как заметил, что прошитая SD карточка так и сидит забытая в компьютере :) Вставил ее в Pi – и все сразу понеслось.

Процесс загрузки (я использовал их официальный вариант – Raspbian “wheezy”) малыша очень шустрый, секунд 15 наверное. Для тех, кто видел debian никаких вопросов Raspbian не вызывает - тот же дебиан, даже не вид сбоку. WiFi Usb определился сам, без танцев к которым я был готов. Прямо на десктопе иконка гуевой настройки этого wifi и работает как должно. В графическом режиме (я выводил на Apple Cinema 24") все работает очень задумчиво, примерно как на почивших на свалке истории нетбуках, а может даже и медленнее. Наверное можно себе представить вариант домашнего использования как компьютер для ребенка, где кроме бразуера ничего не надо, но даже и только для браузера та прошивка, что я трогал, работает медленнее чем хотелось. Меня терзает почти уверенность, что это можно очень заоптимизировать и я не удивлюсь если такие дистрибутивы есть в природе. Однако, мне такое использование вроде и не нужно, так что подробнее я этот вопрос не стал исследовать. Если у вас есть опыт как из Pi сделать быстрый браузер - отпишите в комментариях.

Мне показалось интереснее поиграться с ним в качестве супер-мелкого, безголового и мало-потребляющего сервера. Честно говоря, никакой практической необходимости в таком сервере я тоже не ощущаю, но вот захотелось и все тут. Поставил минимальный набор, который я всегда водружаю на свои сервера (mercurial, java7, nginx и прочее по мелочи) и начал пробовать. Конечно, эта коробочка не поражает воображение своей производительностью, особенно если сравнивать ее с большими серверами, которые я нещадно эксплуатирую по работе. Однако, опыт работы с самыми скромными инстансами в облаке AWS приучил меня к мысли, что и малыши могут на что-то сгодиться.

В результате, поднял на этом микро-сервере копию сайта. Можно прямо сейчас пройти на p2.umputun.com и насладиться результатом. Оно конечно медленнее чем обычно, но вовсе не по причине недостатка мощности Pi, но из за довольно скромных скоростей моего домашнего интернета на отдачу. Для интереса, попробовал загрузить этот “сервер” и вот результат, вполне пристойный:

ab -n 1000 -c 10 http://p2.umputun.com/
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking p2.umputun.com (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Finished 1000 requests


Server Software:        nginx/1.2.1
Server Hostname:        p2.umputun.com
Server Port:            80

Document Path:          /
Document Length:        31387 bytes

Concurrency Level:      10
Time taken for tests:   32.216737 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      31626360 bytes
HTML transferred:       31413936 bytes
Requests per second:    31.04 [#/sec] (mean)
Time per request:       322.167 [ms] (mean)
Time per request:       32.217 [ms] (mean, across all concurrent requests)
Transfer rate:          958.66 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       30  100 313.1     66    3088
Processing:   123  215  61.7    207     545
Waiting:       36   75  47.5     68     397
Total:        166  316 317.2    271    3316

Percentage of the requests served within a certain time (ms)
  50%    271
  66%    306
  75%    326
  80%    337
  90%    368
  95%    410
  98%    566
  99%   3215
 100%   3316 (longest request)

Если из этого исключить интернет, то получим около 190 запросов в секунду.

Еще попробовал позапускать всякие свои сервисы - jutw, rt-jc (система поддерживающая чат радио-т), pubcdn (редиректор моего CDN) и даже ukeeper worker. Все это штуки на java и все они работали вполне адекватно. Т.е. настолько адекватно, что jutw можно просто оставить на постоянное место жительство, а pubcdn отложить в долгий ящик и если настанет падение дата-центра, то вполне можно использовать как резервное решение. Для ukeeper пришлось несколько ограничить параметры (там у меня пытается задействовать все по максимуму), но в урезанном варианте и с невысоким уровнем паралельности Pi вел себя очень достойно.

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

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

Да, чуть не забыл - Pi можно задействовать как медиа центр. По отзывам тех, кто пробовал - XBMC работает и фильмы крутит.

А вы чего с своим Raspberry Pi делаете?