javaone russia 2013: Опыт использования jdk и glassfish с raspberry pi

39
Опыт использования JDK и Glassfish с Raspberry PI Юрий Трухин, SDE, Researcher (CNIP GIS LLC) [email protected] twitter.com/trukhinyuri Wednesday, April 24, 13

Upload: yuri-trukhin

Post on 22-Jun-2015

861 views

Category:

Technology


2 download

DESCRIPTION

JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

TRANSCRIPT

Page 1: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Опыт использования JDK и Glassfish с Raspberry PI

Юрий Трухин, SDE, Researcher (CNIP GIS LLC)[email protected]/trukhinyuri

Wednesday, April 24, 13

Page 2: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Wednesday, April 24, 13

Page 3: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

План

•Девайс

•Зачем

•Специфика ОС и JDK

•Опыт с Glassfish 4

•Пробуем

Wednesday, April 24, 13

Page 4: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Raspberry Pi

Wednesday, April 24, 13

Page 6: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Полет фантазии с PI http://pingbin.com/2012/12/30-cool-ideas-raspberry-pi-project/

Wednesday, April 24, 13

Page 7: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Типичный кластер из Raspberry Piraspberrycolocation.com - бесплатный colocation вашего Pi

Wednesday, April 24, 13

Page 8: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Raspberry Pi в стоечном исполнении:)

Wednesday, April 24, 13

Page 9: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Кто из вас пробовал программировать на JAVA для Raspberry PI?

Wednesday, April 24, 13

Page 10: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Кто из вас использовал Raspberry PI или ARM аналог с JAVA для каких-то производственных задач?

Wednesday, April 24, 13

Page 11: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Зачем?

Wednesday, April 24, 13

Page 12: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Зачем?

•Подготовка к HP Moonshot и другим “взрослым” arm серверам (хардверелизация?)

Wednesday, April 24, 13

Page 13: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Зачем?

•Подготовка к HP Moonshot и другим “взрослым” arm серверам (хардверелизация?)

• Компьютер для одной задачи

Wednesday, April 24, 13

Page 14: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Зачем?

•Подготовка к HP Moonshot и другим “взрослым” arm серверам (хардверелизация?)

• Компьютер для одной задачи

•Создание надежной системы на ненадежных узлах (как один из элементов)

Wednesday, April 24, 13

Page 15: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Зачем?

•Подготовка к HP Moonshot и другим “взрослым” arm серверам (хардверелизация?)

• Компьютер для одной задачи

•Создание надежной системы на ненадежных узлах (как один из элементов)

• Решение задач малого бизнеса

Wednesday, April 24, 13

Page 16: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

ARM процессоры в будущем станут мейнстримом

Сегодняшний анонс

Wednesday, April 24, 13

Page 17: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

ARM процессоры в будущем станут мейнстримом

Сегодняшний анонс

Компания AMD будет производить ARM процессоры AMD G-Series X - это официально

http://www.forbes.com/sites/sharifsakr/2013/04/23/amd-to-reduce-reliance-on-pc-market-by-2016-sell-new-arm-based-chips/

Wednesday, April 24, 13

Page 18: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Зачем?

Это интересно :)

Wednesday, April 24, 13

Page 19: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Какую ОС поставить? Какую Java выбрать?

Wednesday, April 24, 13

Page 20: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Важное в архитектуре ARM 11

• ARM (Advanced RISC Machine)

•Базируется на наборе инструкций ARMv6

•Имеет сопроцессор VFP (низкозатратные вычисления с плавающей запятой одинарной/двойной точности)

Wednesday, April 24, 13

Page 21: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Для разработчиков Java важно, есть ли поддержка Hard float.

Рекомендуемые ОС с расширениями специально для Pi:

• Raspbian “weezy” (hard float)

• Soft-float Debian “weezy” Armel

Эти и другие ОС брать тут: http://www.raspberrypi.org/downloads

Wednesday, April 24, 13

Page 22: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

• JDK 8 Hard float for ARM Developer Preview

https://jdk8.java.net/fxarmpreview/index.html

регулярные выпуски обновлений вместе с обычной JDK8 - планируются через 3 месяца

будет оптимизирована для систем с малым количеством памяти

Рекомендуется для использования сейчас:

• JDK 7 update 21 for ARM Soft float

• Java SE Embedded 7 Update 21 Soft float/ Java SE Embedded Suite

Wednesday, April 24, 13

Page 23: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Однако чтобы использовать сейчас, надо подшаманить:)

Wednesday, April 24, 13

Page 24: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Доведение soft-float armel debian до рабочего состояния

Как правильно записать img образ ОС на карту:

http://elinux.org/RPi_Easy_SD_Card_Setup

Стандартное имя пользователя pi, пароль raspberry.

В любой версии Raspbian Pi настроен получить IP по DHCP.

В первый раз можно попасть по SSH, потом могут быть проблемы:)

Wednesday, April 24, 13

Page 25: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Доведение soft-float armel debian до рабочего состояния

Сначала обновляем ОС штатными средствами:

sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade

Используем утилиту конфигурирования:

sudo raspi-config

Wednesday, April 24, 13

Page 26: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

raspi-config

Важно сделать expand_rootfs, иначе дальнейшие обновления просто не влезут на карту.

Wednesday, April 24, 13

Page 27: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Обновляем ядро системы и др. системные компоненты

Устанавливаем апдейтер

sudo  wget  http://goo.gl/1BOfJ  -­‐O  /usr/bin/rpi-­‐update  &&  sudo  chmod  +x  /usr/bin/rpi-­‐update

Обновляем

sudo  rpi-­‐update

После обновления в raspi-config можно включить ssh при старте ОС и он даже не пропадет после перезагрузки.

После обновления ядро будет 3.6.11+ или выше

Wednesday, April 24, 13

Page 28: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Устанавливаем JDK 7

Качаем и распаковываем например в /opt/java/ текущую версию JDK для ARM

Создаем симлинк, например на current в той же папке, ссылающийся на текущую JDK, чтобы при обновлении Java не переконфигурировать, а просто менять симлинк

Говорим, где наша Java:

sudo update-alternatives --install "/usr/bin/java" "java" "/opt/java/current/bin/java" 1sudo update-alternatives --set java /opt/java/current/bin/java

Проверяем:

java -version

Wednesday, April 24, 13

Page 29: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Устанавливаем JDK 7

Дописываем Java_Home и Path:

в конец /etc/environment дописываем JAVA_HOME="/opt/java/current"

в ~/.bashrc :

export JAVA_HOME="/opt/java/current"

export PATH=$PATH:$JAVA_HOME/bin

Перезагружаемся (sudo reboot)

Wednesday, April 24, 13

Page 30: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Особенности JDK 7 на ARM

- нет G1GC

- не поддерживается -server VM, применение опции дает тот же эффект, как -client (в JDK 8 -server VM возможно будет работать на ARMv7)

– максимум ReservedCodeCacheSize - 32 мб (максимальный размер кэша кода у компилятора).

В реальном мире: если ваше приложение работает с 512 мб системной памяти - очень большая вероятность, что оно заработает на arm без специальных оптимизаций.

Wednesday, April 24, 13

Page 31: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Опыт с Glassfish

Использовался в реальной производственной среде на кластере из 6 Raspberry Pi в каждом офисе компании.

Мы использовали внутренние разработки GEO4GEO/Semantics – интеллектуальная система хранения, обработки и анализа геоданных.

Технически это Java EE 7 serverside + модульный javascript толстый клиент.

(разработанный с modules.js https://github.com/trukhinyuri/

modules.js )

Wednesday, April 24, 13

Page 32: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Настройки JVM

+UseSerialGC

-Xmx450m, Xms не установлен

-XX:MaxPermSize=192M

На 5 минут интенсивной работы приложения 25 секунд тратится на GC

Wednesday, April 24, 13

Page 33: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Временные показатели

Старт домена - 1m20s

Старт панели управления Glassfish - 3m40s

Холодный старт ноды GEO4GEO – 84 секунд (получение адресов нодов от трекера облака, синхронизация индекса, проверка структуры семантической базы данных)

Вход в WebUI – мгновенно (в среднем модуле UI 5-20 запросов к rest за действие).

1 Raspberry Pi позволяет комфортно работать в GEO4GEO 10 пользователям (узкое место - подсистема передачи данных и одноядерный CPU), в случае, если все будут запрашивать данные или загружать их из системы

Минимальная отказоустойчивая конфигурация - распределенные 3PI + 3PI.

Wednesday, April 24, 13

Page 34: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Semantics Internal Benchmark

Определяет время выборки множества данных по заданным семантическим меткам из индекса 99999x99999

Raspberry Pi 0.9GHz – 105 OpsPentium 4 2.0 GHz – 338 OpsCore i7 2.8GHz – 3682 Ops

Wednesday, April 24, 13

Page 35: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Рекомендации

- Используйте asadmin утилиту для управления Glassfish (и развертывайте приложения с помощью ее)

- Попробуйте Glassfish Embedded в действии.

- Горизонтально масштабируйте ПО.

Если ничего не помогает и все тормозит и глючит?

Wednesday, April 24, 13

Page 36: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Рекомендации

Если ничего не помогает и все тормозит и глючит:

КУПИТЕ НОРМАЛЬНЫЙ СЕРВЕР :)

Wednesday, April 24, 13

Page 37: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Пробуем простое приложение modules.js на Glassfish 4 (Javascript + REST)

Wednesday, April 24, 13

Page 38: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Youtrack на Raspberry PI

Wednesday, April 24, 13

Page 39: JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry Pi

Спасибо за внимание!

Юрий Трухин, SDE, Researcher (CNIP GIS LLC)[email protected]/trukhinyuri

Wednesday, April 24, 13