Я подключил два хоста через оптоволоконный канал 40 Гбит / с и хотел бы определить базовый уровень для передачи данных между ними. Я вижу относительно низкие скорости (~ 620 МБ / с). Кажется, что скорость передачи сигналов ниже и на самом деле может составлять 5 Гбит / с (что согласуется с тем, что я вижу), но я очень мало знаю о волокне (и нахожусь на шаткой почве).
Моя установка выглядит следующим образом:
Выдержка из вывода эттоол на интерфейсах 40Gbe на каждом узле
Speed: 40000Mb/s
Duplex: Full
Port: FIBRE
Запуск приемника UDP на одном хосте (10.0.0.2)
nc -vv -u -l 2222 > /dev/null
и отправитель с другой
time dd if=/dev/zero count=10000 bs=1500k | nc -u 10.0.0.2 2222
приводит к скорости около 650 МБ / с. Разные размеры блоков имеют небольшие различия.
Если бы кто-то мог указать, ошибочен ли мой подход или мышление, я был бы весьма признателен (я очень зеленый в этой области, а страницы вики и документы производителей были для меня немного непрозрачными).
Смотреть top
во время выполнения вашего теста. Возможно, вы достигли пределов ЦП на nc
команда. Мы видели nc
стать пределом пропускной способности, будучи привязанным к ЦП. Поскольку мы наблюдаем гораздо более высокую пропускную способность в таких вещах, как репликация DRBD в пространстве ядра, я предполагаю, что nc
испытывает накладные расходы из-за множества системных вызовов.
Если это так, вы можете запустить несколько одновременных dd | nc
чтобы воспользоваться преимуществами нескольких ядер ЦП и продолжить тестирование.
Лучше использовать такой инструмент, как iperf вместо того dd | nc
.
Таким образом, вы можете протестировать TCP и UDP и получить правильный отчет о пропускной способности, а также контролировать скорость, размер пакета и т. Д.
Люди регулярно используют это для измерения производительности 10Gbe и 40Gbe.