У меня очень нестабильная производительность с NFS между двумя хрипящими машинами, и я не могу решить эту проблему.
Настроить:
Машина 1 'video1': двойной 5506 с оперативной памятью 12 ГБ, XFS на RAID6 8x3 ТБ, экспортированный как 'video1' из '/ mnt / storage'
Машина 2 'storage1': Phenom X2 @ 3.2Ghtz с оперативной памятью 8GB, ZFS на 5x2TB, экспортированная как 'storage1' из / mnt / storage1-storage
Производительность локальной записи:
mackek2@video1:/mnt/storage/testing$ dd if=/dev/zero of=localwrite10GB bs=5000k count=2000
2000+0 records in
2000+0 records out
10240000000 bytes (10 GB) copied, 16.7657 s, 611 MB/s
Производительность локального чтения:
Оба подключены к одному и тому же гигабитному коммутатору HP, и iperf дает твердые 940 Мбит / с в обоих направлениях.
Моя проблема в том, что, когда я пишу в экспорт видео1 из хранилища1, производительность оказывается на высоте. Кажется, что для первых нескольких (5-7) гигабайт передачи файлов (я надеюсь как можно быстрее переместить файлы AVCHD или MJPEG размером 30-120 ГБ) производительность упадет с 900 Мбит / с до 150-180 Мбит / с, поэтому время медленный как 30 Мбит / с. Если я перезапущу сервер ядра NFS, производительность восстановится еще на несколько гигов.
mackek2@storage1:/mnt/video1/testing$ dd if=/dev/zero of=remoteWrite10GB count=2000 bs=5000K
2000+0 records in
2000+0 records out
10240000000 bytes (10 GB) copied, 223.794 s, 45.8 MB/s
mackek2@storage1:/mnt/video1/testing$ dd if=/dev/zero of=remoteWrite10GBTest2 count=2000 bs=5000K
2000+0 records in
2000+0 records out
10240000000 bytes (10 GB) copied, 198.462 s, 51.6 MB/s
mackek2@storage1:/mnt/video1/testing$ dd if=/dev/zero of=bigfile776 count=7000 bs=2000K
7000+0 records in
7000+0 records out
14336000000 bytes (14 GB) copied, 683.78 s, 21.0 MB/s
mackek2@storage1:/mnt/video1/testing$ dd if=/dev/zero of=remoteWrite15GB count=3000 bs=5000K
3000+0 records in
3000+0 records out
15360000000 bytes (15 GB) copied, 521.834 s, 29.4 MB/s
Когда дела идут быстро, nfsiostat на клиенте дает среднее значение RTT в несколько мс, но при падении производительности он увеличивает RTT до 1,5 секунд. Кроме того, во время записи глубина очереди ЦП увеличивается до 8.
Теперь, при чтении из того же экспорта, я получаю красивые 890 Мбит / с плюс-минус несколько Мбит / с для всего чтения.
mackek2@storage1:/mnt/video1/testing$ dd if=remoteWrite10GBTest2 of=/dev/null
20000000+0 records in
20000000+0 records out
10240000000 bytes (10 GB) copied, 89.82 s, 114 MB/s
mackek2@storage1:/mnt/video1/testing$ dd if=remoteWrite15GB of=/dev/null
30000000+0 records in
30000000+0 records out
15360000000 bytes (15 GB) copied, 138.94 s, 111 MB/s
То же самое происходит наоборот с storage1 в качестве сервера NFS. Очередь процессора подскакивает, скорости падают до дерьма, и я выдергиваю волосы.
Я попытался увеличить количество демонов NFS до 64, но после нескольких концертов он все равно не работает.
Вы не включаете параметры монтирования или экспорта, поэтому в NFS есть ряд вещей, которые могут повлиять на производительность. Я бы рекомендовал попробовать следующие варианты для максимальной производительности и надежности NFS (исходя из моего опыта):
Варианты крепления: tcp,hard,intr,nfsvers=3,rsize=32768,wsize=32768
Параметры экспорта: async