javaone russia 2013: Опыт использования jdk и glassfish с raspberry pi
DESCRIPTION
JavaOne Russia 2013: Опыт использования JDK и Glassfish с Raspberry PiTRANSCRIPT
Опыт использования JDK и Glassfish с Raspberry PI
Юрий Трухин, SDE, Researcher (CNIP GIS LLC)[email protected]/trukhinyuri
Wednesday, April 24, 13
Wednesday, April 24, 13
План
•Девайс
•Зачем
•Специфика ОС и JDK
•Опыт с Glassfish 4
•Пробуем
Wednesday, April 24, 13
Raspberry Pi
Wednesday, April 24, 13
Raspberry Pi
Подробная инженерная информация:http://www.element14.com/community/docs/DOC-42993/l/raspberry-pi-single-board-computer
Wednesday, April 24, 13
Полет фантазии с PI http://pingbin.com/2012/12/30-cool-ideas-raspberry-pi-project/
Wednesday, April 24, 13
Типичный кластер из Raspberry Piraspberrycolocation.com - бесплатный colocation вашего Pi
Wednesday, April 24, 13
Raspberry Pi в стоечном исполнении:)
Wednesday, April 24, 13
Кто из вас пробовал программировать на JAVA для Raspberry PI?
Wednesday, April 24, 13
Кто из вас использовал Raspberry PI или ARM аналог с JAVA для каких-то производственных задач?
Wednesday, April 24, 13
Зачем?
Wednesday, April 24, 13
Зачем?
•Подготовка к HP Moonshot и другим “взрослым” arm серверам (хардверелизация?)
Wednesday, April 24, 13
Зачем?
•Подготовка к HP Moonshot и другим “взрослым” arm серверам (хардверелизация?)
• Компьютер для одной задачи
Wednesday, April 24, 13
Зачем?
•Подготовка к HP Moonshot и другим “взрослым” arm серверам (хардверелизация?)
• Компьютер для одной задачи
•Создание надежной системы на ненадежных узлах (как один из элементов)
Wednesday, April 24, 13
Зачем?
•Подготовка к HP Moonshot и другим “взрослым” arm серверам (хардверелизация?)
• Компьютер для одной задачи
•Создание надежной системы на ненадежных узлах (как один из элементов)
• Решение задач малого бизнеса
Wednesday, April 24, 13
ARM процессоры в будущем станут мейнстримом
Сегодняшний анонс
Wednesday, April 24, 13
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
Зачем?
Это интересно :)
Wednesday, April 24, 13
Какую ОС поставить? Какую Java выбрать?
Wednesday, April 24, 13
Важное в архитектуре ARM 11
• ARM (Advanced RISC Machine)
•Базируется на наборе инструкций ARMv6
•Имеет сопроцессор VFP (низкозатратные вычисления с плавающей запятой одинарной/двойной точности)
Wednesday, April 24, 13
Для разработчиков Java важно, есть ли поддержка Hard float.
Рекомендуемые ОС с расширениями специально для Pi:
• Raspbian “weezy” (hard float)
• Soft-float Debian “weezy” Armel
Эти и другие ОС брать тут: http://www.raspberrypi.org/downloads
Wednesday, April 24, 13
• 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
Однако чтобы использовать сейчас, надо подшаманить:)
Wednesday, April 24, 13
Доведение soft-float armel debian до рабочего состояния
Как правильно записать img образ ОС на карту:
http://elinux.org/RPi_Easy_SD_Card_Setup
Стандартное имя пользователя pi, пароль raspberry.
В любой версии Raspbian Pi настроен получить IP по DHCP.
В первый раз можно попасть по SSH, потом могут быть проблемы:)
Wednesday, April 24, 13
Доведение soft-float armel debian до рабочего состояния
Сначала обновляем ОС штатными средствами:
sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade
Используем утилиту конфигурирования:
sudo raspi-config
Wednesday, April 24, 13
raspi-config
Важно сделать expand_rootfs, иначе дальнейшие обновления просто не влезут на карту.
Wednesday, April 24, 13
Обновляем ядро системы и др. системные компоненты
Устанавливаем апдейтер
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
Устанавливаем 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
Устанавливаем 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
Особенности JDK 7 на ARM
- нет G1GC
- не поддерживается -server VM, применение опции дает тот же эффект, как -client (в JDK 8 -server VM возможно будет работать на ARMv7)
– максимум ReservedCodeCacheSize - 32 мб (максимальный размер кэша кода у компилятора).
В реальном мире: если ваше приложение работает с 512 мб системной памяти - очень большая вероятность, что оно заработает на arm без специальных оптимизаций.
Wednesday, April 24, 13
Опыт с Glassfish
Использовался в реальной производственной среде на кластере из 6 Raspberry Pi в каждом офисе компании.
Мы использовали внутренние разработки GEO4GEO/Semantics – интеллектуальная система хранения, обработки и анализа геоданных.
Технически это Java EE 7 serverside + модульный javascript толстый клиент.
(разработанный с modules.js https://github.com/trukhinyuri/
modules.js )
Wednesday, April 24, 13
Настройки JVM
+UseSerialGC
-Xmx450m, Xms не установлен
-XX:MaxPermSize=192M
На 5 минут интенсивной работы приложения 25 секунд тратится на GC
Wednesday, April 24, 13
Временные показатели
Старт домена - 1m20s
Старт панели управления Glassfish - 3m40s
Холодный старт ноды GEO4GEO – 84 секунд (получение адресов нодов от трекера облака, синхронизация индекса, проверка структуры семантической базы данных)
Вход в WebUI – мгновенно (в среднем модуле UI 5-20 запросов к rest за действие).
1 Raspberry Pi позволяет комфортно работать в GEO4GEO 10 пользователям (узкое место - подсистема передачи данных и одноядерный CPU), в случае, если все будут запрашивать данные или загружать их из системы
Минимальная отказоустойчивая конфигурация - распределенные 3PI + 3PI.
Wednesday, April 24, 13
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
Рекомендации
- Используйте asadmin утилиту для управления Glassfish (и развертывайте приложения с помощью ее)
- Попробуйте Glassfish Embedded в действии.
- Горизонтально масштабируйте ПО.
Если ничего не помогает и все тормозит и глючит?
Wednesday, April 24, 13
Рекомендации
Если ничего не помогает и все тормозит и глючит:
КУПИТЕ НОРМАЛЬНЫЙ СЕРВЕР :)
Wednesday, April 24, 13
Пробуем простое приложение modules.js на Glassfish 4 (Javascript + REST)
Wednesday, April 24, 13
Youtrack на Raspberry PI
Wednesday, April 24, 13
Спасибо за внимание!
Юрий Трухин, SDE, Researcher (CNIP GIS LLC)[email protected]/trukhinyuri
Wednesday, April 24, 13