Измерение пропускной способности сети с использованием скорости передачи данных netcat и CIFS/SMB
Я пытался измерить и сравнить производительность нашей локальной сети в рамках более крупного проекта. Наша локальная сеть построена с использованием коммутаторов Cat5e и HP ProCurve 1800-24G, которые поддерживают автоматическое распознавание 10/100/1000 Мбит / с. Физическая топология довольно проста. В нашей серверной стойке есть ProCurve, к которому подключены все серверы (я неправильно называю его "магистральным" коммутатором). Каждый из трех наших коммутаторов, к которым подключены все клиентские машины, затем подключается к "магистральному" коммутатору, используя отдельный кабель / порт для каждого коммутатора. Это в основном дизайн "хаб". Рабочая станция, с которой я тестирую, находится в двух коммутаторах от "магистрального" коммутатора и имеет старый IDE-диск. Я использовал HDTune для измерения скорости моего диска примерно на 60 МБ / с. Наши серверы - HP DL380 G5 с массивом RAID6 из 72 ГБ однопортовых дисков SAS 15 КБ и двумя процессорами Intel Xeon Duo Core с тактовой частотой 3,0 ГГц.
Я прочитал несколько других ( здесь и здесь) вопросов по этой теме, а также статью Tom's Hardware, поэтому я знаю, что моя фактическая пропускная способность будет намного меньше теоретической максимальной пропускной способности сети 1 Гбит (например, Скорость передачи 124 МБ / с). Однако, настоящая вещь, которая озадачивает меня, - это несоответствия между числами, которые я получаю с помощью netcat, и сроками передачи файлов с использованием CIFS/SMB.
Я использую Cygwin-версию Netcat, например, так:
На "сервере":
nc -vv -l -p 1234 > /dev/null
На "клиенте":
time yes|nc -vv -n 192.168.1.10 1234
Для тестирования скорости передачи файлов с помощью CIFS / SMB я просто делаю что-то вроде этого с помощью Cygwin:
time cp local_file.iso /remote_dir/
Теперь, если я не выполнил свою математику (делим байты, передаваемые по секундам, получаю байты в секунду и конвертируем оттуда), совершенно неправильная передача с помощью netcat действительно очень медленная. Как 4-8 МБ / с медленно. С другой стороны, используя 120 МБ.iso в качестве файла передачи, я вычисляю пропускную способность сервера CIFS / SMB на уровне 30-35 МБ / с. Все еще медленнее, чем я ожидал, но это совершенно другое число, чем то, которое я получаю с помощью netcat.
Я должен отметить, что на самом деле я использую два разных сервера для тестирования netcat и CIFS/SMB. Я использую хост XenServer для netcat и сервер Windows 2003 для CIFS (у меня нет возможности установить netcat на сервер Windows). Они идентичны с точки зрения аппаратного обеспечения. Теперь я знаю, что это может быть чем-то вроде сравнения между яблоками и апельсинами, но если я сделаю передачу CIFS на хост XenServer, я получу скорость передачи около 30 МБ / с, что, кажется, совпадает с результатом, который я получаю на Windows 2003 Server.
Наверное, у меня действительно есть два вопроса: 1) Почему разные цифры между netcat и временем передачи файлов общего доступа CIFS / SMB? и 2) Почему моя фактическая пропускная способность такая низкая? Я знаю, что мои диски могут так быстро передавать столько данных на сетевую карту, но наверняка я должен увидеть что-то около 60 МБ / с?
2 ответа
У меня нет точного ответа здесь, кроме как быть очень осторожным, какой инструмент вы используете для измерения фактической пропускной способности. Я использовал netcat (как версии cygwin, так и GNU), синхронизированные передачи CIFS/SMB, синхронизированные передачи SCP, iperf и NetCPS на множестве хостов в обоих направлениях И, конечно же, я получил совершенно разные ответы. Тем не менее, я обнаружил, что при аккуратном и методичном использовании одного и того же инструмента я получу одинаковые числа на разных хостах.
Еще одна вещь, которую стоит упомянуть, это то, что многие из этих инструментов проверяют только пропускную способность сети. Их полезная нагрузка фактически отправляется из памяти непосредственно в сеть (я полагаю, что и iperf, и NetCPS делают это). Хотя это полезно для тестирования производительности сети и выявления проблем с инфраструктурой, оно не дает хорошего представления о том, как будет выглядеть производительность конечных узлов вашего клиента. В моем случае я могу получить около 25-30 МБ / сек с моей рабочей станции, используя что-то вроде временной передачи файлов, но iperf сообщит, что я могу получить 45-50 МБ / сек.
Так что это в значительной степени оборачивает все, что я знаю о первой половине моего вопроса... различные инструменты дадут вам совершенно разные результаты при измерении пропускной способности сети.
Что касается второй части моего вопроса, я действительно понятия не имею. Скорость передачи данных около 25–30 МБ / с кажется ужасной для конечных узлов, пока вы не поймете, что они могут передавать данные в сеть только с той скоростью, с которой будут работать их диски и шины (а моя рабочая станция - sloowww). Хочу ли я использовать более 25% моей теоретической пропускной способности? Да, но из того, что я прочитал, мои результаты не совсем необычны. Я обнаружил, что серверы были, конечно, намного быстрее (60-70 МБ / с), что соответствует их измеренной максимальной скорости диска (HDTune сообщает об этом около 1 ГБ / с... кажется медленным для одноканального 15K RPM RAID-6 SAS диски?). Странная вещь заключалась в том, что некоторые серверы казались намного медленнее, и существовала асимметричная скорость передачи в зависимости от того, какая машина действовала как клиент, а какая - как сервер. Например: я получу 45 МБ / с в одном направлении и 12 МБ / с в другом. Я подозреваю, что виноват тот факт, что эти серверы находятся в разных подсетях, но я этого не подтвердил. Я даже дошел до того, что протестировал сетевой адаптер, порт коммутатора и кабель, чтобы попытаться найти неисправность. Я думаю, что ошибка заключается в дизайне топографии сети и, возможно, в маршрутизаторе, но я не могу быть в этом уверен, так как до моего приезда сюда не проводился сравнительный анализ. Короче говоря... некоторые вещи значительно медленнее, чем остальная сеть. Странно действительно.
Физическая сеть Топография:
----- 146.63.205.65 ----|--------|
| | "Main" |---- [Client Switch # 1]
<--[NetWare 6.5] | Switch |---- [Client Switch # 2]
| | |---- [Client Switch # 3]
----- 192.168.61.1 -----|--------|
|
|
"Servers"
Посмотрите , насколько быстро выполняется чтение в xen - используйте что-то вроде hdparam или просто сделайте локальную копию, которая даст представление о производительности диска
для передачи файлов попробуйте другой инструмент, такой как dd, странно, почему nc медленный - например, очень быстрый для меня