Два сервера с одинаковым числом процессоров могут обеспечивать совсем разную пропускную способность, потому что важное число — это сколько ядер активный путь данных способен реально использовать. Один демон в пространстве пользователя, обрабатывающий пакеты одного клиента, ограничен одним ядром, тогда как выгруженный путь в ядре может распределить эту работу. Ни одно из утверждений не говорит, что сделает конкретная машина с вашим трафиком, поэтому измерение идёт раньше подсчёта ядер.

Сравнение ниже — о том, где обрабатываются пакеты, а не о том, какой продукт быстрее в отвлечённом смысле. Это разные вопросы с разными ответами.

Одно ядро на поток на пути в пространстве пользователя

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

Запуск нескольких экземпляров сервера на одном хосте распределяет отдельных клиентов между процессами. Он не распараллеливает существующее соединение и требует отдельных пулов, слушателей и решений маршрутизации.

Другой путь: пакеты в ядре

Выгрузка канала данных переносит поддерживаемую обработку пакетов и криптографию в ядро, где работа может использовать несколько ядер. Это меняет вопрос о ёмкости с одного ядра на машину, но только для конфигураций, которые поддерживает реализация: совместимый модуль ядра, подходящий шифр данных и конфигурация без функций, которые выгрузка исключает. Установить модуль — не то же самое, что использовать его, поэтому подтвердите активный режим по журналу самого соединения или по выводу состояния. Баннер версии доказывает, что доступно, а не что работает.

Выгрузка не убирает аутентификацию или канал управления и не делает каждое развёртывание многоядерным. Это локальное ускорение совместимого пути данных, и требования различаются в зависимости от платформы и версии.

Что на самом деле решает сравнение

Настоящий выбор — между принятием потолка на поток, распределением клиентов по экземплярам и переходом на поддерживаемую конфигурацию с выгрузкой. Каждый вариант решает свою задачу, и выбор неверного стоит денег, не сдвигая число. Важен тот тест, который повторяет способ использования сервиса.

Измерьте три формы: один клиент с одной передачей, один клиент с несколькими потоками и несколько клиентов вместе. Высокая сумма в третьей не доказывает, что одна загрузка способна её достичь, а медленная одиночная передача не доказывает, что сервер исчерпал общую ёмкость. Результаты отвечают на разные вопросы, и оба стоит сохранить.

Только средняя форма говорит, помогает ли параллелизм внутри одного клиента, что обычно является свойством транспорта и пути, а не сервера. Только первая говорит о потолке, который увидит одно приложение. Держите нагрузку одинаковой между запусками, чтобы сравнение что-то значило.

Измерять так, чтобы число что-то значило

Запишите версии сервера и клиента, активный путь данных, согласованный шифр данных, направление передачи, размеры пакетов, число потоков и длительность. Следите за активностью по ядрам и потерями пакетов и очередей на обоих концах, потому что интерфейс самого клиента, сеть провайдера или служба назначения могут стать пределом первыми. Меняйте по одной переменной за раз: запуск, который меняет шифр, сжатие, MTU и выгрузку одновременно, не скажет, что именно имело значение. Во время теста сохраняйте ту политику доступа, которую вы действительно собираетесь внедрять, потому что лабораторная схема, которую никто не запустит, доказывает мало.

Затем оставьте запас для канала управления, для повторных переговоров и для всего остального, что работает на хосте.

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

Похожие статьи