Почему несколько соединений с одного хоста обеспечивают лучшую пропускную способность, чем несколько соединений с разных хостов?
Я подозреваю, что это что-то связанное с ядром (Linux), но подтверждение очень поможет.
Подробнее У меня есть 1 процесс получателя, назовем его R. Он принимает входящие соединения и получает данные, используя select ().
У меня есть 3 процесса отправителя S1, S2, S3. Они подключаются к R и отправляют данные с фиксированной скоростью, т. Е. 200 Мбит / с каждый.
Если S1, S2 и S3 находятся на одной машине, я получаю лучшие результаты, чем если бы каждая из них была на другой машине. (R в обоих случаях на другом компьютере)
Пример: R на хосте 0, S1, S2, S3 на хосте 2, R получает со скоростью 600 Мбит / с
R на хосте 0, S1 на хосте 1, S2 на хосте 2, S3 на хосте 3, R принимает со скоростью 480 Мбит / с
Для меня это выглядит нелогичным, я ожидал обратного, поскольку во втором случае отправители не должны совместно использовать сетевую карту и процессор (не ожидайте, что процессор или сетевая карта будут узкими местами ...) *
[Хосты выше - это узлы в кластере linux с выделенным полнодуплексным гигабитным коммутатором. Они работают под управлением 2.6.24-24 (последняя версия Ubuntu, я думаю)]