Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Java и Linux - Борьба за микросекунды

B901ed2c8433cd33ebbc1ad2085eea51?s=47 aragozin
August 08, 2017

Java и Linux - Борьба за микросекунды

B901ed2c8433cd33ebbc1ad2085eea51?s=128

aragozin

August 08, 2017
Tweet

More Decks by aragozin

Other Decks in Technology

Transcript

  1. Deutsche Bank Technology Centre Deutsche Bank Java и Linux Борьба

    за микросекунды Алексей Рагозин
  2. 1 Deutsche Bank Technology Center Deutsche Bank Алексей Рагозин Август

    2017 Типовая архитектура торговой системы Client Connectivity Order Management System Exchange Connectivity Settelment Risk Managment Trade Life Cycle Other Downstreams Settlement
  3. 1 Deutsche Bank Technology Center Deutsche Bank Алексей Рагозин Август

    2017 Классы систем Ultra Low Latency  Время отклика системы – десятки микросекунд  Колокация – обработка в рамках одного ЦОД  Специализированное сетевое оборудование  Прямая работа с сетевым стеком из прикладного кода Latency Sensitive  Типовое серверное и сетевое оборудование  Обмен данными между ЦОД  Время отклика компонента – сотни микросекунд  Обработка бизнес логики Real-Time  Гарантированное время отклика  Как правило низкая производительность  Требуется real-time версия ОС Высокая пропускная способность  Пропускная способность важнее времени отклика  Агрессивная буфферизация и пакетна обработка  Время отклика может страдать из-за буфферизации
  4. 1 Deutsche Bank Technology Center Deutsche Bank Алексей Рагозин Август

    2017 Архитектура
  5. 1 Deutsche Bank Technology Center Deutsche Bank Алексей Рагозин Август

    2017 Архитектура в стиле JEE Business Logic RDBMS Message Broker Message Broker
  6. 1 Deutsche Bank Technology Center Deutsche Bank Алексей Рагозин Август

    2017 Архитектура в стиле JEE Business Logic RDBMS Message Broker Message Broker 2 Phase Commit Send message Commit SQL transaction Acknowledge message
  7. 1 Deutsche Bank Technology Center Deutsche Bank Алексей Рагозин Август

    2017 Двухфазный коммит (2PC) Достоинства Стандартизация X/Open, XA Гарантия однократной обработки Широкая поддержка Недостатки Распределённый коммит увеличивает время отклика Синхронный коммит между разными ресурсами
  8. 1 Deutsche Bank Technology Center Deutsche Bank Алексей Рагозин Август

    2017 Альтернатива 2PC Сквозная нумерация сообщений Брокер хранит диапазон сообщений Потребитель может “проиграть” сообщения с произвольного номера Потребитель сам хранит номер последнего сообщения Распределённая транзакция не требуется
  9. 1 Deutsche Bank Technology Center Deutsche Bank Алексей Рагозин Август

    2017 Секвенсирование сообщений Journal Channel Outbound Inbound Business Logic Sequencing Channel Channel Publishing DB Async consumers Change Log ?
  10. 1 Deutsche Bank Technology Center Deutsche Bank Алексей Рагозин Август

    2017 Восстановление после сбоя Каждый канал хранит номер последней транзакции При восстановлении  Находим минимальный номер транзакции по всем каналам  Проигрываем журнал с этого номера  Каждый канал игнорирует уже отправленные сообщения Требуется строго детерменированная бизнес логика!  Обработка входного сообщения должна быть повторяемой  Временные метки считаются в момент секвенсирования  Состояние бизнес объектов хранится в памяти
  11. 1 Deutsche Bank Technology Center Deutsche Bank Алексей Рагозин Август

    2017 Секвенсирования сообщений Достоинства  Нет распределённой транзакции  Выходные каналы не тормозят друг друга  Запись в журнал параллельно с бизнес логикой  Возможность “тёплого” резервирования Недостатки  Требование к детерменированной бизнес логике  Полное состояние бизнес объектов в памяти
  12. 1 Deutsche Bank Technology Center Deutsche Bank Алексей Рагозин Август

    2017 Прикладной код
  13. 1 Deutsche Bank Technology Center Deutsche Bank Алексей Рагозин Август

    2017 Параллельная обработка 12 Network stack Selector thread Worker Worker Worker
  14. 1 Deutsche Bank Technology Center Deutsche Bank Алексей Рагозин Август

    2017 Синхронизация потоков Свободный ресурс – быстрый путь  Медленная операция с памятью (compare and set) Занятый ресурс – медленный путь  Вход в ядро (context switch)  Ожидание Двойная стоимость – синхронизация требуется и на захват, и на освобождение ресурса
  15. 1 Deutsche Bank Technology Center Deutsche Bank Алексей Рагозин Август

    2017 Context Switch Cost Синхронизация требует вызов ядра ОС, что требует переключения контекста CPU (context switch) Стоимость переключение контекста  Переключение контекста – единицы микросекунд  Сброс кэшей CPU – десятки микросекунд  Ожидание в очереди на CPU – сотни микросекунд
  16. 1 Deutsche Bank Technology Center Deutsche Bank Алексей Рагозин Август

    2017 Context Switch Cost http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html
  17. 1 Deutsche Bank Technology Center Deutsche Bank Алексей Рагозин Август

    2017 Цена взаимодействия потоков Атомарные операции с памятью < 1 мкс  Lock free структуры данных  Блокирующая синхронизация быстрый путь Быстрое переключение контекста ~ X * 10 мкс  Выполнение на выделенном ядре Медленное переключение контекста ~ X * 100 мкс  Перескакивание по ядрам Насильственное потоков вытеснение ~ X 10 мс
  18. 1 Deutsche Bank Technology Center Deutsche Bank Алексей Рагозин Август

    2017 Конвейерная обработка Network Receive Unmarshal Business logic Jouranling Network Send Marshal
  19. 1 Deutsche Bank Technology Center Deutsche Bank Алексей Рагозин Август

    2017 Конвейерная обработка Достоинства  Однопоточная детерминированная бизнес логика  Однопоточные структуры данных  Возможность привязки потоков к ядрам  Спекулятивное выполнение Недостатки  Параллельная обработка только на уровне стадий  Нельзя применять “блокирующие” операции в бизнес логике
  20. 1 Deutsche Bank Technology Center Deutsche Bank Алексей Рагозин Август

    2017 Мусор Сборка мусора в JVM неизбежна  Наша цель – 99-ый перцентиль  Настройка сборщика мусора Concurrent Mark Sweep алгоритм Паузы можно укоротить используя больше CPU Интервал между паузами можно увеличить  Оптимизации кода Уменьшение выделения памяти там, где это оправдано  GC не единственный неконтролируемый источник задержек
  21. 1 Deutsche Bank Technology Center Deutsche Bank Алексей Рагозин Август

    2017 Garbage free coding Garbage free  Проблемы с многопоточностью  Сложная логика повторного использования объектов Immutable objects  Слишком много мусора  Неоптимальные структуры данных Immutable objects Garbage free Holistic Low Latency
  22. 1 Deutsche Bank Technology Center Deutsche Bank Алексей Рагозин Август

    2017 LINUX
  23. 1 Deutsche Bank Technology Center Deutsche Bank Алексей Рагозин Август

    2017 Настройка OS  Отключение “зелёных” функций  Отключение/минимизация свопинга  Тюнинг планировщика задач  Резервирование ядер под критические потоки  Эксплуатация NUMA  Отключение HyperThreading  Отключение Transparent Huge Pages  Настройка сетевого стека
  24. 1 Deutsche Bank Technology Center Deutsche Bank Алексей Рагозин Август

    2017 Спасибо Алексей Рагозин http://blog.ragozin.info alexey.ragozin@db.com
  25. 1 Deutsche Bank Technology Center Deutsche Bank Алексей Рагозин Август

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