У меня 4-портовый гигабитный адаптер Intel 82571EB. Он использует драйвер e1000e. На тестовой машине работает Ubuntu 9.10, клиенты 9.10 / 10.04. Я пробовал агрегацию каналов (режим 4) и адаптивную балансировку нагрузки (режим 6). Настройка выглядит следующим образом:
сервер == 4-портовый сетевой адаптер == 4 кабеля cat6 == коммутатор Linksys SRW2024 == 4 или более клиентов.
Я тестирую iperf и TCP. Для режима 4 я устанавливаю LAG в коммутаторе. Для режима 6 - нет. Мои тесты:
4 или более клиентов, каждый из которых имеет соединения со скоростью 1 Гбит / с, являются клиентами iperf. Они работают одновременно. Сервер уже прослушивает эти соединения (у меня там был запущен iperf -s). Результаты такие же, поскольку сервер работает только со скоростью 1 Гбит / с, а не 4 Гбит / с вместе взятых. Если я использую один клиент, я получаю 1 Гбит / с. Если у меня 4 или 8 клиентов, пропускная способность на каждого клиента снижается до 250 или 125 Мбит / с (эти цифры приведены только для иллюстрации).
Почему я не могу получить 4 Гбит / с на сервер и обратно? Как я могу это исправить?
Балансировка нагрузки между ссылками в группе агрегации портов не выполняется строго по кадрам. Коммутатор и сервер используют методологию, учитывающую некоторую комбинацию исходного MAC-адреса, MAC-адреса назначения, TCP или UDP-порта источника и / или назначения и т. Д. Для предотвращения доставки пакетов вне очереди для одного сеанса.
Вы можете увидеть ожидаемую производительность, если запустите несколько сеансов iperf на разных портах прослушивания с каждым клиентским подключением к другому сеансу ... в зависимости от используемых методов балансировки нагрузки.
Я помню, как читал где-то о связывании, что оно не масштабируется линейно, поэтому с 4 сетевыми картами 1 Гбит / с вы должны увидеть что-то около 2,5–2,8 Гбит / с. Если я найду источник, я обновлю свой ответ.