Перейти к основному содержимому
Нормативная версия документации - английская

Эта страница переведена с английского языковой моделью. При любом расхождении верен английский оригинал.

Бенчмарки

Во что ruststream-rdkafka обходится на каждом сообщении: пропускная способность против сырого клиента rdkafka, инструкции и выделения памяти его кода.

Против сырого клиента​

Первый график прогоняет один сценарий тремя способами на настоящем брокере Kafka. «Сырой клиент» напрямую работает с консьюмером librdkafka. «Крейт брокера» читает подписку этого крейта собственным циклом, без рантайма. «RustStream» - сервис, который пишет пользователь: обработчик #[subscriber] в приложении. Первая разность показывает, сколько этот крейт стоит поверх клиента, которого он оборачивает, а вторая - сколько сверху добавляет рантайм.

Каждый цикл изображён полосой от лучшего круга до самого медленного: точка отмечает лучший круг, засечка - медиану. Ноль оси - лучший круг сырого клиента, и точка правее нуля значит, что цикл медленнее. Пустая точка отмечает цикл, у которого разница с сырым клиентом меньше разброса кругов. Таблица под графиком печатает лучший круг, а в скобках медиану.

Два сценария различаются тем, что значит ack. При автофиксации librdkafka сохраняет смещение, когда отдаёт запись, и ack носит рекомендательный характер. При Commit::Tracked каждый ack сохраняет смещение, как показывает страница Завершение.

Стоимость кода​

Второй график считает, во что обходится одно сообщение на потоке сервиса: инструкции под callgrind и выделения памяти под DHAT, в установившемся режиме. Каждый сценарий - сервис на KafkaBroker против того же брокера. В счёт входят диспетчеризация фреймворка, код этого крейта и вызовы librdkafka на этом потоке. Выборка, протокол группы, отправка записей и отчёты о доставке выполняются в собственных потоках librdkafka и в счёт не входят. «Холодный старт» - разовая стоимость запуска сервиса, вступления в группу и получения первой записи.

Результаты​

Против сырого клиентаНасколько каждый цикл отстаёт от лучшего круга сырого клиента
  • Сырой клиент
  • Крейт брокера
  • RustStream
  • круги, от лучшего до самого медленного
  • лучший круг
  • медианный круг
  • разброс кругов
  • неразличимо

ruststream-rdkafka 0.7.0 on ruststream 0.7.2, AMD Ryzen 9 7900X 12-Core Processor, Linux 7.2.10-x64v3-xanmod1-1, apache/kafka:4.0.0 in Docker on localhost, измерено 2026-10-17. Как сняты числа

consumer group, auto-commit, 512 B JSON
  • неразличимо
  • неразличимо
consumer group, tracked commits, 512 B JSON, ack each
  • +15.4%
  • неразличимо
Показать числа таблицей
СценарийСырой клиентКрейт брокераRustStreamОверхед
consumer group, auto-commit, 512 B JSON1 610 947 msg/s (1 492 199)1 543 835 msg/s (1 459 819) (неразличимо к клиенту)1 411 671 msg/s (1 270 883)неразличимо
consumer group, tracked commits, 512 B JSON, ack each1 615 939 msg/s (1 603 120)1 366 726 msg/s (1 317 848) (+15.4% к клиенту)1 429 085 msg/s (1 324 713)неразличимо
Стоимость кода

AMD Ryzen 9 7900X 12-Core Processor, x86_64, 427-5912 MHz, 12 physical, 24 logical, 62.4 GiB, unknown, Linux 7.2.10-x64v3-xanmod1-1, 1.99.0, 3.25.1, bench, inheriting release (opt-level = 3, lto = fat, codegen-units = 16, debug = line-tables-only), ruststream-rdkafka default (json), ruststream macros,json. ruststream-rdkafka 0.7.0, ruststream 0.7.2, измерено 2026-10-17.

Инструкции
Выделения
consumer group, JSON decode into a small struct, ack each
3 114,2
1
reply through this crate's publisher, delivery report awaited
7 823,8
5
consumer group in batches of 64, from what librdkafka fetched
3 176,4
1
Показать числа таблицей
СценарийИнструкцииВыделенияХолодный старт
consumer group, JSON decode into a small struct, ack each3 114,21978 377 / 276
reply through this crate's publisher, delivery report awaited7 823,851 310 777 / 372
consumer group in batches of 64, from what librdkafka fetched3 176,41977 306 / 277

Машина​

ПроцессорAMD Ryzen 9 7900X 12-Core Processor
Архитектураx86_64
Частота427-5912 MHz
Ядра12 physical, 24 logical
Память62.4 GiB
Скорость памятиunknown
Операционная системаLinux 7.2.10-x64v3-xanmod1-1
Брокерapache/kafka:4.0.0 in Docker on localhost
Компилятор1.99.0
Профиль сборкиbench, inheriting release (opt-level = 3, lto = fat, codegen-units = 16, debug = line-tables-only)
Фичиruststream-rdkafka default (json), ruststream macros,json
RUSTFLAGSnone (the recipe clears RUSTFLAGS, so the numbers are not tied to this CPU)
Круговая задержка78 µs (one metadata request and its answer)
Valgrind3.25.1

Числа берутся из файла docs/benchmarks/results.json этой версии, который записывает рецепт бенчмарков. Как они сняты, объясняет страница Методология, а какие выводы они позволяют сделать, - страница Числа.