Перейти к содержанию

Как правильно измерять производительность ГОСТ без самообмана

Методика измерения криптографических операций в ядре, OpenSSL и на дисковых томах.

Документация ПО — НАЙС.ОС CLOUD. Это самостоятельная учебно-справочная статья. Команды приведены для изучения и диагностики; операции с ключами, дисками и действующими сервисами выполняют только после резервного копирования и проверки назначения.

Сначала определите, что измеряется

Производительность отдельного блока «Кузнечика», потока CBC, XTS-тома, TLS-соединения и реального VPN-шлюза — совершенно разные показатели. Нельзя сравнивать их как одно число «скорость ГОСТ». В первом случае учитываются вычисления и память, во втором — системные вызовы и интерфейсы, в третьем — файловая система и диск, в четвёртом — протокол и сеть.

Слои тестирования

Тест Главная метрика Обязательные условия
OpenSSL EVP МБ/с, задержка блока Точная версия Provider и алгоритм/режим
AF_ALG Операций/с, МБ/с Размер блока, batch и стоимость вызова ядра
LUKS2 XTS Реальный I/O, задержка Накопитель, очередь, FS, direct/buffered I/O
IPsec ESP Полезная пропускная способность Размер пакета, MTU, rekey и потери
TLS 1.3 Рукопожатие и пропускная способность Сессии, сертификаты, группа и cipher suite

Почему результаты легко исказить

Данные могут оставаться в файловом кэше, виртуальный накопитель может иметь другой реальный backend, а производительность VM зависит от конкурирующих нагрузок. Подробно записывайте uname -r, модель CPU, количество потоков, размер операций, расположение диска, реализацию алгоритма и длительность каждого прогона. Прогревайте систему и собирайте несколько прогонов — одиночное число редко репрезентативно.

Встроенный ГОСТ и новая сборка ядра

После перехода с внешних .ko на встроенные алгоритмы сравнивайте одинаковые режимы и одинаковую нагрузку. Изменение механизма компоновки не гарантирует ускорения или замедления: на результат влияют компилятор, CPU, реализация таблиц, стоимость копирования и особенности маршрута данных.

Проверка без опасных команд

Для первичной инвентаризации достаточно uname -r, lscpu, openssl version -a и чтения /proc/crypto. Нагрузочные тесты проводить только на изолированной VM или свободном ресурсе. Не запускайте интенсивные тесты на рабочем VPN-шлюзе, если он обслуживает реальных пользователей.

Итоговый протокол должен содержать не только среднюю скорость, но и разброс, наблюдаемые ошибки, ограничения и ссылки на использованные команды.

Первоисточники и дополнительное чтение

  • RFC 7801 — устройство «Кузнечика», § 5 с официальным примером.
  • RFC 9058 — режим MGM, приложение A с тестовыми векторами.