Я провел несколько тестов в нашей гигабитной сети.
Когда я передаю большой файл (10 ГБ) с компьютера с Windows 7 на другой, производительность никогда не превышает 50 МБ (начинается с 80 МБ / с в течение одной секунды, а затем снижается до 32 МБ / с).
Используя одновременную передачу данных с нескольких компьютеров, клиент может максимально увеличить свое гигабитное соединение. То же самое, при использовании нескольких клиентов одновременно, исходный компьютер достигает пропускной способности около Гб.
Тестирование проводилось на очень быстрых дисках (2 велоцираптора в Raid 0, 4 WD красных на LSI megaraid RAID5, SSD, Revodrive X3 ...). Так что они не являются узким местом.
Когда я перехожу с сервера Windows, пропускная способность немного лучше, но далеко от ожидаемых 112 МБ / с для локальной сети gibit.
Любая идея ?
Изменить после странного комментария ходока: мы используем интегрированную сетевую карту (Intel) на материнских платах ASUS и рабочей станции DELL. Коммутаторы - это управляемые Cisco SG 300-20, SF 300-08 и Netgear GS 108.
Я предполагаю, что вы используете TCP / IP для передачи файла, хотя вы также не упомянули, какой протокол вы используете.
Ответ на этот вопрос занял бы большую книгу - а их очень много. Но среди возможных причин есть:
контроль перегрузки: ваш сетевой стек регулирует пропускную способность, постепенно увеличивая скорость в течение всего времени существования соединения (до тех пор, пока не произойдет потеря пакетов, после чего скорость резко упадет). Также помогает использование jumbo-пакетов.
размер окна : конечная точка TCP / IP будет отправлять столько данных, сколько, по ее мнению, может буферизовать удаленная система. Принимающая сторона должна иметь возможность буферизовать, по крайней мере, полосу пропускания x RTT. Хотя RTT здесь низкий, пропускная способность большая. Когда был разработан IPV4, он не ожидал, что ему придется справляться с такими большими буферами. Есть решение - включить масштабирование окна.
Ваш компьютер не предназначен для отправки данных - он выполняет несколько задач. Для обработки данных сетевая карта генерирует прерывание - это увеличивает задержку. Вы можете смягчить последствия этого на хороших сетевых картах, включив буферизацию на карте (объединение прерываний)
компьютеру еще предстоит проделать значительный объем работы по упаковке данных в фреймы и их передаче по сети - опять же, это можно уменьшить - в этом случае, используя Разгрузка TCP если ваша ОС / оборудование поддерживает это.
.... и это до того, как взглянуть на особенности Ethernet и / или протокола, который вы используете для передачи файлов.
Мне наконец удалось получить скорость передачи файлов более 100 МБ / с.
Я удалил сетевой адаптер из диспетчера периферийных устройств и переустановил его. Думаю, с параметрами драйвера Intel был бардак. Вероятно, из-за попытки установить высокий MTU.