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