1

У меня дома небольшой медиа-сервер с программным RAID-массивом и гигабитным каналом связи с остальной частью моей сети.

По какой-то причине, я получаю только ~ 10 МБ / с при копировании на / с сервера.

Я использую программный RAID5 (mdadm) на 4 дисках по 1 ТБ. Вдобавок к этому я затем использую LVM, чтобы дать мне огромный пул дискового пространства, который затем разделяется на несколько разделов, размер которых можно изменять по мере необходимости. Я предполагаю, что это, скорее всего, причина, но я хотел бы знать наверняка, в чем причина.

Итак, как я могу сравнить пропускную способность сети (рабочий стол Windows 7 <-> сервер Ubuntu) и производительность жесткого диска, чтобы попытаться определить, где может быть мое узкое место?

[Редактировать] Если кому-то интересно, материнская плата - системная плата Intel D945GCLF2 для настольных ПК. Так что это процессор серии 300 Atom с набором микросхем Intel® 945GC Express

[Edit2] Я чувствую себя таким дураком! Я только что проверил свой рабочий стол, и у меня была подключена более медленная из двух встроенных сетевых плат, так что сервер, вероятно, здесь не виноват. Перенос копии Ubuntu с сервера я получаю ~ 35-40 МБ / с в соответствии с Windows 7. Я сделаю эти тесты HD, когда у меня будет шанс (только для полноты).

4 ответа4

4

Как сказал Антуан: процессор Atom и SW RAID - плохая идея. Для измерения пропускной способности ваших дисков вы можете использовать hdparm .

Посмотрите на это: http://www.cyberciti.biz/tips/how-fast-is-linux-sata-hard-disk.html

Вы должны измерять свои дисковые устройства и ваши рейд-устройства отдельно. Таким образом, вы можете увидеть, если диски медленные (сломаны?) или RAID медленный. Также обратите внимание на использование вашего процессора (например, с помощью top) во время измерения или доступа к вашему RAID ome другим способом.

Если это не узкое место, проверьте, использует ли ваша ссылка GBEthernet свою полную емкость. Посмотрите на вывод ifconfig . Моя выглядит следующим образом (Mac OS X 10.6, в Ubuntu она должна выглядеть примерно так):

en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether 64:b9:e8:bf:8f:b4 
    inet 192.168.0.5 netmask 0xffffff00 broadcast 192.168.0.255
    media: autoselect (1000baseT <full-duplex,flow-control>)
    status: active

2-я строка снизу: 1000baseT означает: ГБ Ethernet!

[править] Я нашел эту статью: http://www.performancewiki.com/diskio-monitoring.html Он рекомендует sar и iostat для мониторинга дискового ввода-вывода.

2

Несколько вещей для проверки:

  • убедитесь, что сетевой адаптер на самом деле в Гбит больше, а не 10 Мбит с ethtool eth0 (замените eth0 на соответствующий идентификатор устройства сетевого адаптера, если он отличается), найдите показание "скорость" для текущего режима
  • убедитесь, что Windows в настоящее время использует свою карту в режиме Gbit тоже
  • проверьте, какая нагрузка на процессор и ввод / вывод налагается на сервер во время передачи - если вы видите (top или аналогично) одно ядро в состоянии ожидания ввода / вывода, близком к 100%, то ваши диски являются узким местом, если вы видите высокая "системная" загрузка ЦП, а затем ЦП это узкое место (это может быть смесь двух для записи из-за падения производительности RAID 5 "запись -> чтение + чтение + запись + запись" на четыре диска и проверки четности процессором, если ни показания системы, ни IO не являются высокими, то, скорее всего, узким местом является сеть.
  • тестирование производительности массового чтения исключительно на сервере (для тестирования производительности необработанного ввода-вывода независимо от сети): cat большой файл в /dev/null чтобы увидеть, как далеко это зашло (сначала выполните echo 3 > /proc/sys/vm/drop_caches вы знаете, что IO на самом деле бьет по дискам, а не идет из памяти, и если он установлен, используйте pv вместо cat, поскольку это дает полезную скорость + показания прогресса), наблюдая за загрузкой CPU + IO, как это происходит тоже
  • проверить производительность массовой записи с помощью cat /dev/zero > /some/file/on/the/array (или pv /dev/zero > /some/file/on/the/array), наблюдая за использованием процессора, как это происходит тоже.
  • проверить пропускную способность сети bluk, независимо от производительности диска / массива, между машинами с netcat и pv - на машине Win7 выполните nc -l -p 123 > NUL и на сервере, затем выполните pv /dev/zero | nc 1.2.3.4 123 где 1.2.3.4 - адрес окна Windows (можно добавить исключение брандмауэра для nc).

Поскольку вы видите фиксированную скорость ~ 10 Мбайт / с, я бы заподозрил сначала проблему с сетью, а не узкое место на дисках или процессоре - но RAID5 на процессоре Atom может быть одним из узких мест, поэтому вы можете рассмотреть RAID1+0 или RAID10 вместо этого (если ваш массив RAID5 имеет 3 с лишним запаса, то драйвер RAID10 для Linux с 3+запасными должен обеспечивать аналогичную избыточность (возможен отказ любого отдельного диска), но с более высокой производительностью (запись-> запись * 2, а не запись-> read+paritycalc+write * 2), в режиме с тремя дисками драйвер RAID10 делает нечто похожее на то, что контроллеры IBM называют RAID-1E, см. http://en.wikipedia.org/wiki/Non-standard_RAID_levels#Linux_MD_RAID_10).

редактировать:

В список выше добавлена дополнительная вещь для тестирования и другие мелкие детали

1

Прежде всего, вы используете SMB/CIFS, который не очень быстрый протокол (для справки он определенно медленнее, чем NFS).

Во-вторых, это зависит от того, какую нагрузку вы тестируете. Это в основном последовательное или случайное? Если это в основном случайный ввод / вывод, то, вероятно, 10 МБ / с в порядке. Реально от сетевой карты GB можно ожидать 30-50 МБ / с от CIFS (но, как я уже сказал, может быть выше или ниже, в зависимости от рабочей нагрузки).

Вы также можете проверить этот другой ответ из serverfault для настройки производительности CIFS.

Быстрый поиск показал эту страницу с оценками производительности CIFS. Вы можете найти это полезным.

Наконец, вы можете проверить производительность сети с помощью iperf (он может быть скомпилирован и для Windows, и вы можете найти его где-нибудь предварительно скомпилированным)

0

Оказывается, это был настольный компьютер, который я использовал; он работал на скорости 100 Мбит. Спасибо за все советы, хотя - может быть очень полезным для оценки производительности и повышения общей скорости моей системы!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .