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

Симптом указывает на одну машину, а не на интернет

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

Посчитайте устройства между приложением и дальним концом, затем отметьте то, которое шифрует. Всё остальное — лишь носитель байтов, которые оно не может прочитать.

Следите за нагрузкой по ядрам во время передачи

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

mpstat -P ALL 1 5
top -H -b -n 1 | head -20
lscpu | grep -i -E "model name|aes"

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

Отделяйте шифрование от обработки пакетов

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

Если одно ядро занято внутри ядра, решение отличается от занятого потока в пространстве пользователя, и профиль говорит, какой у вас случай. Это различие стоит часа перед покупкой оборудования.

Сравнивайте подобное с подобным, прежде чем делать вывод

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

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

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

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

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

Если наблюдения за процессором не следуют симптому, вернитесь к сетевой стороне. Повторные попытки Wi-Fi, очередь и путь выхода дают тот же результат без всякого участия CPU.

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