10 гигабитных сетевых карт, показывающих только половину пропускной способности

У меня есть 2 физических сервера:

  1. Двухсторонние Intel E5504 @ 2 ГГц, 24 ГБ ОЗУ, 12x32 ГБ твердотельные накопители Intel X25-E в RAID10.
  2. Intel Core2 6400 @ 2,12 ГГц, 3 ГБ ОЗУ, простой 80 ГБ диск SATA.

Обе машины теперь работают под управлением Windows Server 2008 R2 и имеют 10 -гигабитный Supermicro AOC-STGN-i2S (на самом деле это Intel 82599 с логотипом Supermicro) в слотах PCIe x4 - с двойным аксиальным кабелем SFP+ между ними.

Второй сервер только для тестирования.

Сначала я установил ESXi на 2-й и использовал 1-й в качестве хранилища данных.

Я заметил, что в соответствии с CrystalDiskMark, виртуальная машина на ESX получила скорость передачи только 325 МБ / с (пробовал как с NFS, так и с ISCSI).

Я провел тот же тест на первом сервере локально и получил ~1000 МБ / с. Я задавался вопросом, действительно ли сетевое соединение убивает 2/3 скорости, поэтому я заменил второй жесткий диск и установил Windows Server 2008 R2 и попробовал Jperf и NTTtcp. Jperf показал 400 МБ / с, а NTttcp показал 4300-4600 Мбит / с. Диспетчер задач Windows показывал около 600 000 000 байт за интервал, что составляет 4,47 гигабит.

Я проверил, что оба конца имели полный дуплекс, и попытался включать и выключать большие кадры, но разница была только 580 000 000 против 600 000 000 байтов за интервал.

Почему пропускная способность, которую я вижу, составляет лишь половину теоретического максимума в 10 гигабит?

ДОПОЛНЕНИЕ

NTTtcp командные строки:

ntttcpr -m 6,0,192.168.137.1 -a 6 (receiver)
ntttcps -m 6,0,192.168.137.1 -a 6 (sender)

1 ответ

Решение

Я подозреваю, что ваши слоты PCI-e x4 являются узким местом. Теоретическая пропускная способность в этих слотах должна быть в диапазоне 16 Гбит / с (насыщая сетевой адаптер свободным местом), но это не всегда хорошо реализовано с точки зрения контроллера.

У вас есть слот x8 или выше, который вы можете украсть у другого?

Другие вопросы по тегам