Алексей Рагозин "Java и linux борьба за микросекунды"

Post on 14-Apr-2017

49 views 3 download

Transcript of Алексей Рагозин "Java и linux борьба за микросекунды"

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://blog.ragozin.infoalexey.ragozin@gmail.com

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

Данный материал не является предложением или предоставлением какой-либо услуги. Данный материал предназначен исключительно для информационных и иллюстративных целей и не предназначен для распространения в рекламных целях. Любой анализ третьих сторон не предполагает какого-либо одобрения или рекомендации. Мнения, выраженные в данном материале, являются актуальными на текущий момент, появляются только в этом материале и могут быть изменены без предварительного уведомления. Эта информация предоставляется с пониманием того, что в отношении материала, предоставленного здесь, вы будете принимать самостоятельное решение в отношении любых действий в связи с настоящим материалом, и это решение является основанным на вашем собственном суждении, и что вы способны понять и оценить последствия этих действий. ООО “Технологический Центр Дойче Банка" не несет никакой ответственности за любые убытки любого рода, относящихся к этому материалу.