Возвращение zero-copy: как мы прикрутили kTLS к Apache Kafka.

Производительность enterprise-систем

Java
Оптимизация производительности

Доклад принят в программу конференции

Мнение Программного комитета о докладе

Видишь работу? И я не вижу, а она есть. Простое чтение данных по сети часто происходит не с диска напрямую, а через userspace. В данном докладе автор расскажет про универсальный метод вернуться к эффективному использованию сисколла sendfile в современном мире тотального шифрования.

Целевая аудитория

Команды, использующие Apache Kafka в своих продуктах и сервисах.

Тезисы

Наивный способ отправлять файлы по сети — это читать данные в буфер из файла (системный вызов read) и записывать этот буфер в сокет (системный вызов send). Такой подход не самый эффективный, потому что переключения контекста и лишние копирования из кэша ядра в пространство пользователя и, наоборот, из пространства пользователя в буфер сетевой карты очевидно излишни. Для оптимизации такой задачи еще в начале 2000-х в ядре linux появился системный вызов sendfile, в него можно было передать файловый дескриптор, сокет, количество байт и отступ, и в итоге за один системный вызов ядро делало необходимую работу без лишнего копирования и только с одним переключением контекста. Проблема только в том, что данная схема не работает если мы используем TLS, потому что данные перед отправкой в сокет надо зашифровать блочным шифром. С версии ядра 4.13 уже появилась частичная поддержка (TLS 1.2), а с версии ядра 5.1 полноценная поддержка (TLS 1.3) шифрования трафика на стороне ядра — kernel TLS (сокращенно kTLS).

В докладе подробно будет рассказано, каким образом можно реализовать поддержку kTLS с упором на java. Реализация этого функционала позволила значительно улучшить скорость отдачи данных консьюмерам в кластере Apache Kafka.

Apache Ignite committer, мейнтейнер Apache Ignite python client.
Занимается разработкой Apache Ignite.

СберТех

СберТех — российский разработчик программного обеспечения для бизнеса и государства, основной поставщик решений для Сбера. Флагманское решение компании — цифровая облачная платформа Platform V для создания приложений любого масштаба и сложности и обеспечения технологической̆ независимости на уровне ПО.

Видео