У меня есть два настольных компьютера, которые общаются друг с другом напрямую. У них обоих есть сетевые адаптеры с поддержкой Gigabit Ethernet. Это 1 Гбит / с или 1000 Мбит / с. Я подключил их к новому 10-метровому прямому кабелю Cat6 UTP, и я приблизился к этому теоретическому максимуму. Диспетчер задач Windows (вкладка «Сеть») показывает скорость 844–946 Мбит / с в одном направлении. Но в другом направлении он показывает только около 326 - 365 Мбит / с.
Local: 192.168.100.152
Remote: 192.168.100.151
Локальный компьютер работает под управлением Windows 8.1 Pro, и у меня он удаленно подключен к другому компьютеру, на котором работает Windows Vista Ultimate.
Iperf результаты
Я использовал Iperf для тестирования. Я проводил тест в течение 60 секунд каждый раз. Я выполнил тест 10 раз для каждого направления общения. Затем я собрал эту таблицу с результатами теста, чтобы получить среднее значение.
192.168.100.152 -> 192.168.100.151 106 MB/s
192.168.100.152 -> 192.168.100.151 107 MB/s
192.168.100.152 -> 192.168.100.151 108 MB/s
192.168.100.152 -> 192.168.100.151 107 MB/s
192.168.100.152 -> 192.168.100.151 107 MB/s
192.168.100.152 -> 192.168.100.151 104 MB/s
192.168.100.152 -> 192.168.100.151 101 MB/s
192.168.100.152 -> 192.168.100.151 108 MB/s
192.168.100.152 -> 192.168.100.151 108 MB/s
192.168.100.152 -> 192.168.100.151 108 MB/s
----------------------------------------------------
Min: 101 MB/s Max: 108 MB/s Avg: 106.4 MB/s (851.2 Mbps)
192.168.100.152 <- 192.168.100.151 41.1 MB/s
192.168.100.152 <- 192.168.100.151 41.1 MB/s
192.168.100.152 <- 192.168.100.151 41.1 MB/s
192.168.100.152 <- 192.168.100.151 41.0 MB/s
192.168.100.152 <- 192.168.100.151 41.0 MB/s
192.168.100.152 <- 192.168.100.151 41.1 MB/s
192.168.100.152 <- 192.168.100.151 41.0 MB/s
192.168.100.152 <- 192.168.100.151 41.1 MB/s
192.168.100.152 <- 192.168.100.151 41.1 MB/s
192.168.100.152 <- 192.168.100.151 41.1 MB/s
-----------------------------------------------------
Min: 41.0 MB/s Max: 41.1 MB/s Avg: 41.07 MB/s (328.56 Mbps)
Мой вопрос: почему так медленно в другом направлении?
Диспетчер задач Windows
Это схема сети, которая видна при выполнении тестов в Iperf.
Обратите внимание на диаграмму на следующих двух скриншотах!
Вы заметили, как оно изменилось с "1 Гбит / с" до "500 Мбит / с" в правом верхнем углу, когда я переключился с отправки данных на получение данных. Почему он это сделал? Это как-то воспринимает другой сетевой порт как половину 1 Гбит / с при движении в одну сторону, но все же переполнен при движении в другую сторону?
Тест передачи файлов
Я провел еще несколько испытаний с файлом данных, чтобы получить более реалистичные показания с диска на диск. Я создал файл 1 ГБ для этой цели. Я использовал только стандартные средства обмена файлами Windows. С локального компьютера я подключился к общему ресурсу C $ на удаленном компьютере и перетянул файл туда-сюда (пропуская веревку), меняя имя файла каждый раз. Я рассчитал все в меру своих способностей, и это то, что я получил.
192.168.100.152 -> 192.168.0.151 1073741824 Byte 25 s 40,96 MB/s
192.168.100.152 -> 192.168.0.151 1073741824 Byte 20 s 51.2 MB/s
192.168.100.152 -> 192.168.0.151 1073741824 Byte 16 s 64 MB/s
192.168.100.152 -> 192.168.0.151 1073741824 Byte 16 s 64 MB/s
192.168.100.152 <- 192.168.0.151 1073741824 Byte 11 s 93.091 MB/s
192.168.100.152 <- 192.168.0.151 1073741824 Byte 34 s 30.118 MB/s
192.168.100.152 <- 192.168.0.151 1073741824 Byte 11 s 93.091 MB/s
192.168.100.152 <- 192.168.0.151 1073741824 Byte 11 s 93.091 MB/s
Пропускная способность, указанная в диаграмме копирования файлов Windows, говорит о другом. Здесь я загружаю два файла, один за другим, в два разных места на одном диске. В первом экземпляре указано, что 107 МБ / с поддерживается на уровне до 41%, а во втором - 98,9 МБ / с - до 87%.
Так что это соответствует результатам, которые я получил с помощью инструмента Iperf. Теперь вот как это выглядит, когда я загружаю на удаленный компьютер.
Он поддерживает 103 МБ / с до 73%, а затем падает до 27,3 МБ / с при 82%, а затем поднимается до 49,1 МБ / с при 93%.
Вот еще две забавно выглядящие диаграммы "американских горок".
Обновление 1 - скорость соединения
Я попытался отключить адаптер Wi-Fi на удаленном компьютере. (Адаптер Wi-Fi уже отключен на локальном компьютере.) Я думаю, что именно это Тимтех подразумевал под этим комментарием. У меня была такая же мысль - что одновременное включение как проводных, так и беспроводных адаптеров ограничивало пропускную способность проводного адаптера до уровня адаптера Wifi (для совместимости с самым медленным адаптером) Поскольку адаптер Wi-Fi (в данном случае DWA-160 Wireless N) обычно определяется как соединение «52 Мбит / с» - «104 Мбит / с» на компьютере Vista.
На следующем снимке экрана удаленный компьютер настроен как сервер, а локальный компьютер настроен как клиент (192.168.100.152 <- 192.168.100.151).
Но отключение адаптера Wi-Fi на удаленном компьютере не помогло моей низкой пропускной способности в проводном соединении.
Не только это! В диспетчере задач Windows на удаленном компьютере скорость соединения для проводного адаптера (LAN 1) отображается как «1 Гбит / с». Если вы посмотрите на скриншоты выше, вы увидите, что на локальном компьютере это определяется как ссылка «500 Гбит / с». Таким образом, для того же проводного соединения Windows Vista говорит, что это соединение со скоростью 1 Гбит / с, в то время как Windows 8.1 Pro говорит, что это соединение со скоростью 500 Гбит / с ... какая из них правильная?
Вот как это выглядит на удаленном компьютере, когда я настроил его как клиент, а локальный компьютер как сервер (192.168.100.152 -> 192.168.100.151).
Как вы можете видеть здесь, используется около 95% канала 1 Гбит / с. Это соответствует 950 Мбит / с. Это именно то, что я получил в тесте выше. Но наоборот - это совсем другая история.
Обновление 2 - Дуплекс и MDI-X
Как предположили некоторые из вас, я взглянул на настройки дуплекса. Как локальный, так и удаленный компьютер были переведены в режим автосогласования, как вы можете видеть на скриншотах ниже.
Я попытался изменить значение «Полный дуплекс 1,0 Гбит / с» на обоих компьютерах. Затем я провел те же тесты, что и раньше, используя Iperf. С локальным компьютером в качестве сервера и удаленным компьютером в качестве клиента я получаю около 950 Мбит / с макс. С локальным компьютером в качестве клиента и удаленным компьютером в качестве сервера я получаю около 360 Мбит / с.
Вот посмотрите на эти скриншоты.
Здесь вы видите диаграмму, когда я загружаю и скачиваю между двумя компьютерами. Более высокий график (использование 95 - 98%) является локальным для удаленного (восходящий поток 192.168.100.152 -> 192.168.100.151). Нижний график (использование ~ 33%) является удаленным к локальному (192.168.100.152 <- 192.168.100.151 ниже по потоку).
Чтобы попытаться исключить любые проблемы с Auto MDI-X, у меня был один из этих кроссоверных адаптеров, подключенных к одному концу кабеля (локальный компьютер).
Это, безусловно, сделало бы кабель кроссовером. Черт, у меня даже был тест с сетевым тестером! Это действительно пересечено сейчас (контакты 1/3, 2/6)!
Итак, теперь у меня есть настоящее перекрестное кабельное соединение между двумя компьютерами, и я вручную установил «Полный дуплекс 1,0 Гбит / с». И все же у меня все та же проблема. Есть еще идеи? Помимо обновления компьютера Vista (или переустановки компьютера 8.1)?
Обновление 3 - Программное или аппаратное ограничение?
Я думаю, что у меня есть две операционные системы, которые не совместимы друг с другом. Они обе системы Windows, но не все системы Windows сделаны равными. Мне придется попробовать использовать Vista на обоих или 8.1 Pro на обоих и посмотреть, какую пропускную способность я получу. Это означает покупку обновления. Будь ты проклят, Microsoft.
Кстати, оба компьютера изготовлены на заказ. Вот некоторые характеристики.
Local
-----
Gigabyte GA-EP45-UD3R
Intel Core 2 Quad Q9650
Intel P45
Corsair XMS2 DHX TwinX DDR2 PC6400/800MHz 4 GB
Realtek 8111C chips (10/100/1000 Mbit)
WD Caviar Black WD1002FAEX
Windows 8.1 Pro 64-bit
Remote
------
Gigabyte GA-X38-DQ6
Intel Core 2 Duo E4500
Intel X38
Corsair XMS2 DHX TwinX DDR2 PC6400/800MHz 4 GB
Dual Realtek 8111B chip (10/100/1000 Mbit)
WD Caviar Black WD1002FAEX
Windows Vista Ultimate 64-bit
Тонни предположил, что на машине Vista может быть плохой чип Realtek. Так что я откопал эти спецификации. Теперь я вижу, что машина Vista использует версию B 8111, в то время как локальная машина использует версию C того же чипа. Это что-нибудь значит? Они оба четко указаны производителем для 1000 Мбит (см. Выше). Может ли быть так, что 8111B уступает так много (360 Мбит / с)?
Эти конкретные диски достигают скорости записи 107 МБ / с. Это именно то число, которое я видел в тесте на локальном компьютере. Но даже длительное последовательное или случайное чтение / запись, возможно, со скоростью 55 МБ / с, НЕ переводит на 360 Мбит / с. Это должно дать мне где-то около 440 Мбит / с, а не 360 Мбит / с, которые я получаю. Поэтому я не подозреваю, что это является узким местом, тем более что они оба используют одну и ту же модель привода. И, кроме того, операция копирования файлов - это одно, но Iperf вообще не использует диски, он использует только оперативную память для тестов.
Обновление 4 - Разгрузка контрольной суммы TCP
По предложению Тонни я попытался отключить разгрузку контрольной суммы TCP (для IPv4 и IPv6).
Я также переключил «Speed & Duplex» обратно на авто для обоих компьютеров. Но это не помогло. У меня все еще низкая пропускная способность в одном направлении и высокая в другом направлении.
Обновление 5 - новая версия драйвера
Я попытался обновить версию драйвера как на локальном, так и на удаленном компьютере до последней версии, загруженной с веб-сайта Gigabyte и веб-сайта Realtek.
Update path...
On local (RTL8111C):
8.1.510.2013 (2013-05-10, Microsoft)
8.20.815.2013 (2013-08-15, Realtek)
On remote (RTL8111B):
6.241.623.2010 (2010-06-23, Realtek)
6.250.908.2011 (2011-09-08, Realtek)
6.252.1109.2012 (2012-11-09, Realtek)
Я все еще получил ту же паршивую пропускную способность в одном направлении.
Обновление 6 - загрузка процессора
Я проверил загрузку процессора. Это не должно быть проблемой. Вот мои выводы.
On local...
Download: 4 - 10 %
Upload: 4 - 10 %
Idle: 0 - 4 %
On remote...
Download: 24 - 38 %
Upload: 10 - 25 %
Idle: 1 - 6 %
Локальный (загрузка, загрузка, простоя)...
Удаленный (загрузка, загрузка, простоя)...
Пульт дистанционного управления потребляет гораздо больше ресурсов процессора, но это также и более медленный Core 2 Duo. Но он никогда не превышал 38% во время моих тестов. Что особенно интересно здесь, так это то, что он использует гораздо больше ресурсов процессора при загрузке (local -> remote), чем при загрузке (local <- remote).
Таким образом, при пропускной способности 950 Мбит / с он использует 38%, а при 360 Мбит / с он использует 25%. Также использование ядра не сбалансировано, оно использует одно ядро больше, чем другое. Я не уверен, какой вывод из этого сделать. Локальный компьютер не отображает загрузку ядра, поэтому я не могу его сравнить. Но загрузка ЦП даже на локальном компьютере (10% при загрузке / выгрузке).
Обновление 7 - новый сетевой адаптер Intel Gigabit
Теперь я установил новый сетевой адаптер PCI-Express Gigabit от Intel в качестве замены встроенного Realtek RTL8111B на удаленном компьютере, который предположительно слишком медленный при загрузке. Номер продукта адаптера Intel - EXPI9301CT. Этот адаптер должен быть очень хорошим по отзывам, которые я прочитал. Я просто хочу исключить это как возможное узкое место.
Я провел некоторое тестирование с Iperf для Windows, и вот результаты.
Локальный (скачать, загрузить)...
Удаленный (скачать, загрузить)...
В среднем этот адаптер немного медленнее, чем адаптер Realtek. Я думаю, что он имеет меньшую нагрузку, чем Realtek, и, как следствие, более стабильную непрерывную пропускную способность. Но я все еще получаю только около 360 Мбит / с в одном направлении и 950 Мбит / с в другом, даже с этим адаптером Intel.
local: 192.168.100.152 (win 8, realtek 8111c)
remote: 192.168.100.154 (vista, intel desktop ct)
192.168.100.152 -> 192.168.100.154 113 MB/s
192.168.100.152 -> 192.168.100.154 104 MB/s
192.168.100.152 -> 192.168.100.154 103 MB/s
192.168.100.152 -> 192.168.100.154 104 MB/s
192.168.100.152 -> 192.168.100.154 102 MB/s
192.168.100.152 -> 192.168.100.154 104 MB/s
192.168.100.152 -> 192.168.100.154 101 MB/s
192.168.100.152 -> 192.168.100.154 102 MB/s
192.168.100.152 -> 192.168.100.154 101 MB/s
192.168.100.152 -> 192.168.100.154 104 MB/s
----------------------------------------------
Max: 113 MB/s Min: 101 MB/s Avg: 103.8 MB/s
192.168.100.152 <- 192.168.100.154 42.2 MB/s
192.168.100.152 <- 192.168.100.154 41.2 MB/s
192.168.100.152 <- 192.168.100.154 41.1 MB/s
192.168.100.152 <- 192.168.100.154 43.0 MB/s
192.168.100.152 <- 192.168.100.154 42.3 MB/s
192.168.100.152 <- 192.168.100.154 42.3 MB/s
192.168.100.152 <- 192.168.100.154 40.2 MB/s
192.168.100.152 <- 192.168.100.154 40.9 MB/s
192.168.100.152 <- 192.168.100.154 41.3 MB/s
192.168.100.152 <- 192.168.100.154 42.0 MB/s
-----------------------------------------------
Max: 43.0 MB/s Min: 40.2 MB/s Avg: 41.65 MB/s
Я понятия не имею, почему он достиг максимума в 113 МБ / с в первом тестовом прогоне, локальном к удаленному. Эта скорость сохранялась на протяжении всего тестового прогона, график был почти плоским при 113 МБ / с. Как и раньше, я использовал 60-секундный интервал для каждого запуска. Однако при следующем запуске он снизился до 104 МБ / с.
Как вы можете судить по этим значениям, у меня все еще такая же пропускная способность с этим адаптером Intel, как и со встроенным адаптером Realtek. Поэтому я могу с уверенностью сказать, что это не имеет никакого отношения к самому адаптеру. Таким образом, мы можем перестать обвинять RTL8111B в том, что он является младшим или меньшим чипом, чем RTL8111C на другой материнской плате. Это все больше и больше напоминает проблему программного обеспечения / ОС / конфигурации или все три вещи одновременно.
Обновление 8 - отличные результаты с Ubuntu LINUX
После того, как я исчерпал все остальные варианты, я, наконец, решил провести несколько тестов с Linux, и получил отличные результаты. Я использовал систему Ubuntu Linux 13.10 Live и Iperf для Linux (версия 2.0.5-3) как на локальной, так и на удаленной машине. Вот результаты.
=======================================================
REALTEK 8111C <-> REALTEK 8111B | IPERF ON UBUNTU LINUX
=======================================================
local: 192.168.100.152
remote: 192.168.100.151
192.168.100.152 -> 192.168.100.151 112 MB/s
192.168.100.152 -> 192.168.100.151 112 MB/s
192.168.100.152 -> 192.168.100.151 112 MB/s
192.168.100.152 -> 192.168.100.151 112 MB/s
192.168.100.152 -> 192.168.100.151 112 MB/s
192.168.100.152 -> 192.168.100.151 112 MB/s
192.168.100.152 -> 192.168.100.151 112 MB/s
192.168.100.152 -> 192.168.100.151 112 MB/s
192.168.100.152 -> 192.168.100.151 112 MB/s
192.168.100.152 -> 192.168.100.151 112 MB/s
----------------------------------------------
Max: 112 MB/s Min: 112 MB/s Avg: 112 MB/s
192.168.100.152 <- 192.168.100.151 110 MB/s
192.168.100.152 <- 192.168.100.151 111 MB/s
192.168.100.152 <- 192.168.100.151 111 MB/s
192.168.100.152 <- 192.168.100.151 111 MB/s
192.168.100.152 <- 192.168.100.151 111 MB/s
192.168.100.152 <- 192.168.100.151 110 MB/s
192.168.100.152 <- 192.168.100.151 111 MB/s
192.168.100.152 <- 192.168.100.151 111 MB/s
192.168.100.152 <- 192.168.100.151 111 MB/s
192.168.100.152 <- 192.168.100.151 111 MB/s
----------------------------------------------
Max: 111 MB/s Min: 110 MB/s Avg: 110.8 MB/s
Локальный (загрузка, загрузка, простоя)...
Как вы можете видеть, я получаю одинаковую пропускную способность в обоих направлениях при использовании Ubuntu. Это потому, что я использую одну и ту же ОС на обеих машинах, или это что-то еще? Получу ли я одинаковую пропускную способность, если на обеих машинах будут установлены одинаковые версии Windows? Я не понимаю, почему это будет иметь значение, если я использую слегка устаревшую версию Windows, а именно Vista, на одной машине и последнюю версию на другом? ... Я имею в виду, что Vista по-прежнему является текущей и поддерживаемой ОС и поддерживается Microsoft. Windows XP - это отдельная история.
Но я знаю, что они делают все возможное, чтобы убить Vista. Например, последняя версия Office 2013 намеренно не поддерживается в Windows Vista. Я уверен, что Microsoft желает, чтобы Vista никогда не случалась. Так же, как они будут хотеть, чтобы Windows 8.0 никогда не случалась. Но я, как правило, так же настойчив, как и они, и я не обновляю свои установки Windows, пока абсолютно не должен.
Поэтому вопрос заключается в том, как получить одинаковую пропускную способность в обоих направлениях с двумя разными версиями Windows. Windows Vista должна поддерживать гигабитную скорость - это не 20-летняя ОС или что-то в этом роде, это не Windows 95, о которой мы говорим. Vista - это современная ОС. Я еще не тестировал одну и ту же версию Windows на обеих машинах. Может быть разница в реализации TCP или что-то между двумя версиями ОС. Если так, то я, вероятно, буду вынужден обновить машину с Vista. Либо так, либо перейдите на Linux. Я не готов платить больше за меньшее. Зачем мне обновлять Windows, чтобы получить пропускную способность гигабита в обоих направлениях?...
Обновление 9 ...
кабель
Я пытался поменять кабель. Я получил те же результаты, что и раньше. Я также получил новый соединительный кабель Cat 6 и попробовал тот. Результаты теста пропускной способности были одинаковыми. Таким образом, кабель не проблема здесь. Я использовал только предварительно соединенные / литые соединительные кабели. Поэтому проводка должна быть правильной. Но я планирую прекратить мои собственные установочные кабели позже.
FW и AV
Что касается брандмауэра (FW) и антивируса (AV), я не использую стороннее программное обеспечение FW или AV. У меня есть только Брандмауэр Windows и Основы безопасности. Я отключил их обоих на обеих машинах. Результаты теста пропускной способности были такими же, как и раньше.
Тест скорости локальной сети
Я установил LAN Speed Test Lite 1.3 на локальном компьютере. Я считаю, что тест проводится между памятью на локальном диске и диском на удаленной машине. Я не уверен. Но он запрашивает общий путь на удаленной машине. Я использовал o $ share на пульте.
Upload: 427 Mbps
Download: 420 Mbps
Я не слишком доверяю этим результатам. Если вы посмотрите на график, то увидите, что он сильно меняется на протяжении всего теста. Тест был "последовательным" тестом, то есть сначала запишите (загрузите) тест, а затем прочитайте (загрузите) тест. Очевидно, что при одновременном тестировании загрузки / выгрузки общая пропускная способность будет ниже. Но я не заинтересован в таких тестах. До сих пор я проводил только "последовательные" тесты с обоими тестами передачи файлов в Windows (совместное использование файлов / smb) и в Iperf.
Я не проводил тесты памяти на память с помощью LAN Speed Test, потому что он требует использования программы под названием LST Server на удаленном компьютере, и эта программа требует регистрации, чтобы использовать его.
Обновление 10 ...
Тесты дисков
Я использовал Crystal Disk Mark 3.0.3 для тестирования дисков. Вот результаты.
Local disk: 118 MB/s read, 113 MB/s write
Remote disk: 70 MB/s read, 69 MB/s write
Это последовательные скорости чтения и записи, основанные на 5 запусках и загрузке 1000 МБ.
Это локальный диск (отметка диска, чтение, запись)...
И это удаленный диск ...
Но я не понимаю ... эти результаты кажутся противоречивыми.
Окей, локальный диск может считывать со скоростью 118 МБ / с, что позволяет загружать около 100 МБ / с. Но удаленный диск не сможет получить его, если он способен записывать только 69 МБ / с. Но по какому-то волшебному повороту я все равно получаю в среднем чуть более 100 МБ / с.
Переходить наоборот имеет больше смысла. Если удаленный диск может читать со скоростью 70 МБ / с, а локальный диск может записывать со скоростью 113 МБ / с, загрузка не должна быть быстрее 70 МБ / с. Я получаю около 40 МБ / с загрузки в среднем. Это казалось бы разумным.
Поэтому я не могу ничего сделать из этих результатов. Я имею в виду диск на локальном компьютере почти не используется. Это также диск с операционной системой, и это единственный раздел в этой системе. Пока удаленный диск почти заполнен, он также разбит на несколько разделов. Тем не менее, он не используется для ОС. Я выбрал букву O:
для теста, потому что это раздел с наибольшим количеством свободного места.
(Обратите внимание, что я использовал букву C:
в предыдущих тестах, которые находятся на совершенно отдельном диске Seagate, который содержит ОС на удаленном компьютере. Так что эти показания не сопоставимы.)
Написать кеширование
С включенным кэшированием записи на диск я получил эти результаты.
Local to remote: 106 MB/s
Remote to local: 42.2 MB/s
Затем я отключил кэширование записи на всех дисках удаленного и локального дисковода.
Я не перезагружался, потому что никакие перезагрузки не запрашивались, чтобы изменения вступили в силу. Затем я получил следующие результаты.
Local to remote: 106 MB/s
Remote to local: 42.1 MB/s
Там не было практически никаких изменений. Нет перезагрузки, и перезагрузка не была запрошена.
Пакет QOS
Затем я перешел к отключению QOS Packet Scheduler для соответствующего адаптера на удаленном компьютере, а затем на локальном компьютере.
Local to remote: 107 MB/s
Remote to local: 41.9 MB/s
Здесь нет существенных изменений. Опять же, перезагрузка и перезагрузка не были запрошены.
Джамбо пакеты
Затем я включил Jumbo-пакеты и использовал настройку 4 ГБ, потому что 4 КБ - это самый большой размер MTU, который поддерживается на обеих машинах.
Local to remote: 105 MB/s
Remote to local: 33.3 MB/s
Теперь здесь загрузка (локальная на удаленную) не пострадала, но пропускная способность была значительно снижена. Перезагрузка не запрашивалась, но я все равно решил перезагрузить обе машины, просто для хорошей меры. Затем я снова выполнил те же тесты и получил эти результаты.
Local to remote: 117 MB/s
Remote to local: 33.2 MB/s
Таким образом, загрузка теперь еще быстрее, но загрузка все еще медленнее, чем была до того, как я внес эти изменения, даже после перезагрузки. Я бы ожидал, что они немного подорожают. Что это значит?