Алексей Рагозин "java и linux борьба за микросекунды"
TRANSCRIPT
Deutsche Bank Technology CentreDeutsche Bank
Java и LinuxБорьба за микросекундыАлексей Рагозин
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017
Типовая архитектура торговой системы
ClientConnectivity
OrderManagement
System
ExchangeConnectivity
Settelment RiskManagment
TradeLife Cycle
OtherDownstreams
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017
Ultra Low Latency
Время отклика системы – десятки/сотни микросекунд
Колокация – обработка в рамках одного ЦОД
Специализированное сетевое оборудование
Прямая работа с сетевым стеком из прикладного кода
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017
Realtime
Гарантированное время отклика
Требуется поддержка на уровне ОС
Время отклика не обязательно малое
Как правило, hard real time системы не отличаются высокой производительностью
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017
Архитектура
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017
Архитектура в стиле JEE
BusinessLogic
RDBMS
Message Broker Message Broker
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017
Архитектура в стиле JEE
BusinessLogic
RDBMS
Message Broker Message Broker
2 Phase CommitSend message
Commit SQL transaction
Acknowledge message
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017
Двухфазный коммит (2PC)
ДостоинстваСтандартизация X/Open, XAГарантия однократной обработкиШирокая поддержка
НедостаткиРаспределённый коммит увеличивает время
откликаСинхронный коммит между разными ресурсами
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017
Альтернатива 2PC
Сквозная нумерация сообщений
Брокер хранит диапазон сообщений
Потребитель может “проиграть” сообщения с произвольного номера
Потребитель сам хранит номер последнего сообщения
Распределённая транзакция не требуется
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017
Секвенсирование сообщений
Journal Channel
OutboundInbound
BusinessLogic
Sequ
encin
g Channel
Channel
Publishing
DB
Async consumers
ChangeLog
?
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017
Восстановление после сбоя
Каждый канал хранит номер последней транзакции
При восстановленииНаходим минимальный номер транзакции по всем каналамПроигрываем журнал с этого номераКаждый канал игнорирует уже отправленные сообщения
Требуется строго детерменированная бизнес логика!
Обработка входного сообщения должна быть повторяемойВременные метки считаются в момент секвенсированияСостояние бизнес объектов хранится в памяти
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017
Секвенсирования сообщений
ДостоинстваНет распределённой транзакцииВыходные каналы не тормозят друг другаЗапись в журнал параллельно с бизнес логикойВозможность “тёплого” резервирования
НедостаткиТребование к детерменированной бизнес логикеПолное состояние бизнес объектов в памяти
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017
Прикладной код
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017
Конвейерная обработка
NetworkReceive
Unmarshal Businesslogic
Jouranling
NetworkSend
Marshal
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017
Конвейерная обработка
ДостоинстваОднопоточная детерминированная бизнес логикаОднопоточные структуры данныхВозможность привязки потоков к ядрамСпекулятивное выполнение
НедостаткиПараллельная обработка только на уровне стадийНельзя применять “блокирующие” операции в бизнес логике
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017
Оптимизации времени отклика
Чистка кодаЛогированиеtoString() дорогая операцииНеобходимо проверять включён ли логер перед форматированием сообщенияИсключенияОбработка исключений медленнаяИсключения должны использоваться в неисключительной логикеReflectionМинимизация использования рефлекшенаПри использовании надо кэшировать метаданные
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017
Мусор
Сборка мусора в JVM неизбежнаНаша цель – 99ый перцентильНастройка сборщика мусора
Concurrent Mark Sweep алгоритмПаузы можно укоротить используя больше CPUИнтервал между паузами можно увеличить
Оптимизации кодаУменьшение выделения памяти там, где это оправдано
GC не единственный неконтролируемый источник задержек
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017
Garbage free coding
Garbage freeПроблемы с
многопоточностьюСложная логика
переиспользования объектов
Immutable objectsСлишком много мусораНеоптимальные
структуры данных
Immutable objects Garbage free
Holistic Low Latency
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017
Синхронизация
Стоимость межпоточной синхронизации
Свободный ресурс – быстрый путьМедленная операция с памятью (compare and set)
Загруженный ресурс – медленный путьВход в ядро (context switch)Ожидание
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017
Context Switch Cost
Синхронизация требует вызов ядра ОС,что требует переключения контекста CPU (context switch)
Стоимость переключение контекстаПереключение контекста – единицы микросекундСброс кэшей CPU – десятки микросекундОжидание в очереди на CPU – сотни микросекунд
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017
Context Switch Cost
http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017
Цена многопоточности
Атомарные операции с памятью < 1 мксLock free структуры данныхБлокирующая синхронизация быстрый путь
Быстрое переключение контекста ~ X * 10 мксВыполнение на выделенном ядре
Медленное переключение контекста ~ X * 100 мксПерескакивание по ядрам
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017
LINUX
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017
“Зелёный” Linux
По-умолчанию, в большинстве дистрибутивов Linux включён режим энергосбережения
Уменьшение частоты ядра, при малой загрузкеИспользуются специальные режимы ожидания ядер
Это негативно влияет на время отклика
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017
Своп
Linux может вытеснять страницы памяти приложения для дискового кэша.
В случае Java приложений это может серьёзно увеличить время отклика.
/proc/sys/vm/swappiness <- 0 swap off - радикальная мера
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017
Привязка потоков
Цель – обеспечить выполнение потоков конвейера на выделенных ядрах.
Поток Java – обычный поток OStaskset позволяет привязать поток к ядруID потока можно получить через jstackПривязанный поток будет выполняться на выделенном ядре
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017
Изоляция ядер
Даже если поток привязан к ядру, другие потоки имеют возможность его вытеснить
isolcpus – параметр ядра Linux, который позволяет исключить ядра из пула планировщика taskset позволяет потокам выполнятся на isolcpus ядрах
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017
NUMA
Non-Uniform Memory Architecture (NUMA)Различные ядра имеют разное время доступа
к разным банкам памяти. Обычно память процесса распределена по всем банкамnumactl позволяет ограничить банки памяти используемые
для определённого процесса
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017
Стратегия настройки Linux
CPU 0 CPU 1 CPU 2 CPU 3 CPU 4 CPU 5 CPU 6 CPU 7 CPU 32 CPU 33 CPU 34 CPU 35 CPU 36 CPU 37 CPU 38 CPU 39
NUMA Node 0
Critical threads Default task set
GC Threads
isolcpus
NUMA Node 1
NUMA Node 2
NUMA Node 3
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017
Стратегия настройки Linux
Одна NUMA нода целиком выделяется под приложение.NUMA нода целиком исключается из планировщика (isolcpus)Приложение запускается под numactl и tasksetКритические потоки привязываются к выделенным ядрамОстальные потоки привязываются к пулу свободных ядер на
нодеGC потоки привязываются ко всем ядра NUMA ноды
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017
Результаты оптимизации
Высокая нагрузка Низкая нагрузкаМедиана (Перцентиль 99) Микросекунды
Исходная версия 1215 (8472) 2878 (23067)
“Чистка кода” 774 (1273) 1197 (3738)Оптимизировано логированиеУбран рефлекшенВключены “спинлоки”
Настройка Linux 611 (765) 684 (873)Зафиксированы частоты ядерnumactl + taskset + isocpus
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017
Спасибо
Алексей Рагозинhttp://[email protected]
12.5
cm
(4.9
2 in
)
0.5
cm (0
.20
in)
0.5
cm (0
.20
in)
12.5
cm
(4.9
2 in
)
13.2
5 cm
– id
entif
ier (
5.51
in)
Deutsche Bank Technology CenterDeutsche Bank Алексей Рагозин
United Dev Conf 2017 34
Данный материал не является предложением или предоставлением какой-либо услуги. Данный материал предназначен исключительно для информационных и иллюстративных целей и не предназначен для распространения в рекламных целях. Любой анализ третьих сторон не предполагает какого-либо одобрения или рекомендации. Мнения, выраженные в данном материале, являются актуальными на текущий момент, появляются только в этом материале и могут быть изменены без предварительного уведомления. Эта информация предоставляется с пониманием того, что в отношении материала, предоставленного здесь, вы будете принимать самостоятельное решение в отношении любых действий в связи с настоящим материалом, и это решение является основанным на вашем собственном суждении, и что вы способны понять и оценить последствия этих действий. ООО “Технологический Центр Дойче Банка" не несет никакой ответственности за любые убытки любого рода, относящихся к этому материалу.