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

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

Числа

Что измеряет каждое опубликованное число и какие числа можно сравнивать между собой.

Сравнение с сырым клиентом​

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

Процент - верхняя граница. Брокер очереди на localhost ставит фреймворк в самые жёсткие условия. Сетевой задержки нет, поэтому та же абсолютная стоимость сообщения даёт больший процент, чем с брокером очереди за настоящей сетью. Читайте процент как верхнюю границу стоимости фреймворка для развёрнутого сервиса, а не как типичную величину.

«Упирается в брокер очереди» - нижняя граница. Пометка значит, что сырой клиент почти весь прогон ждал данных из сокета. Работа фреймворка укладывается в это ожидание, и измеренная разница стремится к нулю. Для такой нагрузки это честный результат: так выглядит насыщенный консьюмер. Но это число - нижняя граница стоимости диспетчеризации, а не её измерение. Бесплатной диспетчеризацию оно не делает.

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

Инструкции - точная мера. В ruststream два прогона одного бинарника дают одно число, и вдвое более быстрая машина даёт то же число. Поэтому строки ruststream сравнимы между собой и с той же строкой, измеренной на другой машине. Времени счётчик не показывает: та же величина обходится дороже там, где код промахивается мимо кэша.

Измеряется только крейт. В ruststream величина - работа самого крейта и ничего больше: сервис, написанный как у пользователя, над внутрипроцессной очередью, с декодированием нагрузки в тип, чтением поля и подтверждением доставки. Брокера очереди в ней нет, поэтому число меняется тогда и только тогда, когда меняется код фреймворка. Рост на два процента - дефект, а не шум.

Установившийся режим. Каждая величина на сообщение измерена в установившемся режиме. Запуск сервиса стоит своё один раз: подключение, подписка, первые выделения памяти. Если разделить эту цену на сообщения прогона, разовая цена попадёт в цену сообщения. Поэтому сценарий измеряется двумя прогонами, второй вдвое длиннее первого, а стоимость сообщения - разница между ними. В ruststream это тысяча и две тысячи доставок. Холодный старт измеряется отдельно, на одной доставке.

Выделения памяти считаются на сообщение. В ruststream на пути доставки их ноль: у работающего сервиса сообщение проходит от очереди до тела обработчика, ни разу не обратившись к аллокатору. На пути публикации в ruststream выделяется только то, что брокер берёт себе, чтобы владеть переданным сообщением.

Адаптации библиотек брокеров измеряют себя на настоящем транспорте, чаще всего на брокере очереди из своего compose-файла. Поэтому в их числа входит и работа клиента брокера, а сами числа немного меняются от прогона к прогону. Страница бенчмарков адаптации сообщает, что входит в число, насколько оно меняется, на скольких доставках идут прогоны и какой допуск к нему применяется.