Руководство по интеграции
### Механика Kernel Bypass
Для достижения микросекундных задержек в обработке котировок HFT-боты используют технологию обхода сетевого стека ядра Linux (Kernel Bypass). Сетевая карта Mellanox ConnectX-6 Dx настраивается на прямую передачу кадров Ethernet в пользовательское пространство процесса (UMEM) через сокеты `AF_XDP` в режиме Zero-Copy.
### Пайплайн обработки сетевых пакетов (Ingress Pipeline)
1. **Аппаратный Ingress (NIC)**: Сетевой адаптер считывает кадр из физического уровня и с помощью DMA перекладывает его в буфер UMEM.
2. **Десериализация (CPU Core 1)**: Процесс-воркер, использующий фреймворк F-Stack (DPDK / AF_XDP), забирает пакет из UMEM, собирает TCP-поток, расшифровывает TLS 1.3 и парсит бинарную SBE-структуру `CleanSbeMarketPayload`.
3. **Lock-Free Handoff**: Процесс выполняет `enqueue_by_reference(...)` в кольцевую очередь `PureCdefSpscQueue` (Single Producer Single Consumer). Данная очередь не использует мьютексы и синхронизируется исключительно на уровне шины процессора через когерентность кэшей MESI (кэш-линия переходит в статус Modified, о чем уведомляется ядро расчета математики).
### Core Pinning (Привязка ядер процессора)
Для исключения переключения контекста планировщика и джиттера L1/L2 кэшей, Hyper-Threading (SMT) отключается в BIOS, а потоки жестко закрепляются за физическими ядрами:
- **Core 0 (CPU 0)**: Выделено под системные прерывания Linux, SSH-сессии и фоновые демоны.
- **Core 1 (CPU 1)**: Выделено под поллинг (polling) сетевого стека F-Stack (обработка сетевых пакетов).
- **Core 2 (CPU 2)**: Выделено под модуль Hawkes MLE (расчет интенсивности потока ордеров на AVX-512).
- **Core 3 (CPU 3)**: Выделено под исполнение ордеров (order execution) и работу со стаканом.
Для достижения микросекундных задержек в обработке котировок HFT-боты используют технологию обхода сетевого стека ядра Linux (Kernel Bypass). Сетевая карта Mellanox ConnectX-6 Dx настраивается на прямую передачу кадров Ethernet в пользовательское пространство процесса (UMEM) через сокеты `AF_XDP` в режиме Zero-Copy.
### Пайплайн обработки сетевых пакетов (Ingress Pipeline)
1. **Аппаратный Ingress (NIC)**: Сетевой адаптер считывает кадр из физического уровня и с помощью DMA перекладывает его в буфер UMEM.
2. **Десериализация (CPU Core 1)**: Процесс-воркер, использующий фреймворк F-Stack (DPDK / AF_XDP), забирает пакет из UMEM, собирает TCP-поток, расшифровывает TLS 1.3 и парсит бинарную SBE-структуру `CleanSbeMarketPayload`.
3. **Lock-Free Handoff**: Процесс выполняет `enqueue_by_reference(...)` в кольцевую очередь `PureCdefSpscQueue` (Single Producer Single Consumer). Данная очередь не использует мьютексы и синхронизируется исключительно на уровне шины процессора через когерентность кэшей MESI (кэш-линия переходит в статус Modified, о чем уведомляется ядро расчета математики).
### Core Pinning (Привязка ядер процессора)
Для исключения переключения контекста планировщика и джиттера L1/L2 кэшей, Hyper-Threading (SMT) отключается в BIOS, а потоки жестко закрепляются за физическими ядрами:
- **Core 0 (CPU 0)**: Выделено под системные прерывания Linux, SSH-сессии и фоновые демоны.
- **Core 1 (CPU 1)**: Выделено под поллинг (polling) сетевого стека F-Stack (обработка сетевых пакетов).
- **Core 2 (CPU 2)**: Выделено под модуль Hawkes MLE (расчет интенсивности потока ордеров на AVX-512).
- **Core 3 (CPU 3)**: Выделено под исполнение ордеров (order execution) и работу со стаканом.