Назад | Перейти на главную страницу

Источники узких мест для программного массива Linux RAID5

Я создал массив RAID5 с 7 дисками с помощью mdadm и поместил LVM2 в массив, если я захочу расширить его в будущем. Форматировал как XFS. Я в основном следовал этой обучающей строке за строкой:

Легко расширить программный RAID 5 Linux с помощью XFS. Лучшие практики?

Когда я делаю

hdparm -tT /dev/md0 

Я вижу скорость чтения 400 МБ / с +

Однако через сеть (гигабитный кроссовер) я получаю только 55-60 МБ / с для чтения и записи. Довольно новая машина (последние 2 года)

В чем могут быть некоторые источники узких мест и как их исправить?

Спасибо.

Для начала, ваша гигабитная сеть составляет 1000 Мбит / с -> 125 Мбит / с, а после накладных расходов это всего ~ 100 Мбит / с. Вы получаете примерно половину от этого, что не очень хорошо; но вы никогда не достигнете 400 Мбит / с или даже близко.

Какой протокол вы используете в сети? CIFS, AFS, NFS? Если это NFS, UDP или TCP? Jumbo-кадры, размер кадра данных, асинхронность / синхронизация? Метод тестирования? На вашу производительность может влиять множество факторов.

Используя NFSv3, UDP, 8k кадров данных, 9k MTU и async + aio, я могу получить 102 Мбит / с из моей гигабитной сети. Я считаю, что это довольно близко к пределу (примечание: я использую FreeBSD на обоих концах, а не linux; и ZFS, а не XFS или EXT).

Измерьте производительность диска локально, чтобы определить, являются ли наблюдаемые вами 55-60 МБ / с диском и / или сетью.

Вы можете проверить локальную скорость с помощью 'time' и 'dd':

you@server$ time dd if=/dev/zero of=file.1 bs=4k count=10M

Это должно написать файл размером 40 ГБ и сказать вам, сколько времени это заняло. Важно записать файл большего размера, чем доступная оперативная память, обычно примерно в два раза больше, если это возможно. Это сделано во избежание любого потенциального эффекта кэширования. Используйте любую комбинацию размера блока, которая подходит для вашего размера полосы и размера блока fs.

Затем прочитайте файл снова, чтобы проверить скорость чтения:

you@server$ time dd if=file.1 of=/dev/null bs=4k

Если локальная производительность выше, чем 55-60 МБ / с, которые вы видите по CIFS с удаленного хоста, посмотрите в сеть (включая обе hosts, вы можете использовать для этого iperf). Если локальная производительность ограничивается 55-60 Б / с, вам нужно будет предоставить более подробную информацию о технических характеристиках и конфигурации оборудования.