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

Медленная пропускная способность NFS

У меня возникли некоторые проблемы с менее ожидаемой пропускной способностью NFS. Изучив несколько вариантов (бесконечный поиск в Google), включая настройку рейда, сетевые интерфейсы и т. Д., Я хотел протестировать базовую настройку, экспортируя ramdisk, установленный на / media / ramdisk, и получая доступ к нему через localhost.

Тесты с RAM-диском показывают ту же картину проблем с производительностью, что и мой экспорт SSD RAID0 NFS, с огромным падением производительности при доступе через NFS, и как SSD-рейд, так и RAM-диск достигают максимума прибл. 13K IOPS при чтении и 4K IOPS при записи.

Сервер:

Ubuntu 18.04, полностью обновленный. ВМ с оперативной памятью 5 ГБ и 8 процессорами. (Главный процессор: Intel (R) Core (TM) i7-4800)

Содержание / etc / exports:

/media/ramdisk       *(rw,async,no_subtree_check,fsid=1)

Установлено через:

sudo mount 127.0.0.1:/media/ramdisk /mnt/ramdisk -o async

Вывод команды монтирования:

127.0.0.1:/media/ramdisk on /mnt/ramdisk type nfs4 (rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=127.0.0.1,local_lock=none,addr=127.0.0.1)

Используйте fio для проверки скорости ramdisk без NFS с помощью следующей команды:

sudo fio --randrepeat=1 --ioengine=libaio --direct=0 --gtod_reduce=1 --name=test1 --filename=/media/ramdisk/test --bs=4k --iodepth=64 --size=4G --readwrite=randrw --rwmixread=75

Я получил:

read: IOPS=283k, BW=1107MiB/s (1160MB/s)(3070MiB/2774msec)
write: IOPS=94.7k, BW=370MiB/s (388MB/s)(1026MiB/2774msec)
cpu          : usr=21.89%, sys=78.07%, ctx=5, majf=0, minf=7

Очень быстро, как и ожидалось

Тестирование через NFS с помощью следующей команды:

sudo fio --randrepeat=1 --ioengine=libaio --direct=0 --gtod_reduce=1 --name=test2 --filename=/mnt/ramdisk/test --bs=4k --iodepth=64 --size=4G --readwrite=randrw --rwmixread=75

Я получил:

read: IOPS=12.7k, BW=49.6MiB/s (51.0MB/s)(3070MiB/61951msec)
write: IOPS=4239, BW=16.6MiB/s (17.4MB/s)(1026MiB/61951msec)
cpu          : usr=5.24%, sys=21.16%, ctx=786004, majf=0, minf=5

Я слежу за системой во время теста, и ни процессор, ни сеть не испытывают особой нагрузки во время теста.

Использование dd непосредственно на ramdisk с:

sudo dd if=/media/ramdisk/test of=/dev/null bs=1M iflag=nocache status=progress

Я получил:

4294967296 bytes (4.3 GB, 4.0 GiB) copied, 0.691044 s, 6.2 GB/s

Проделав то же самое через NFS (/ mnt / ramdisk / test), я получаю:

4294967296 bytes (4.3 GB, 4.0 GiB) copied, 2.58302 s, 1.7 GB/s

Я увеличил RPCNFSDCOUNT до 64

Запустив iperf на localhost, я получаю

[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  64.6 GBytes  55.5 Gbits/sec

Таким образом, очевидно, что пропускная способность сети хорошая.

Так что же может сдерживать производительность NFS?

sudo fio --randrepeat=1 --ioengine=libaio --direct=0 --gtod_reduce=1 --name=test1 --filename=/media/ramdisk/test --bs=4k --iodepth=64 --size=4G --readwrite=randrw --rwmixread=75

О нет :-(, вы используете --iodepth=64 с libaio ioengine и direct=0 поэтому эта команда, скорее всего, не будет вести себя так, как вы ожидаете! Увидеть предупреждение в fio справка / руководство о неиспользовании direct=1 когда используешь libaio ioengine:

libaio

Собственный асинхронный ввод-вывод Linux. Обратите внимание, что Linux может поддерживать поведение в очереди только с небуферизованным вводом-выводом (установите direct = 1 или buffered = 0). Этот движок определяет специфические параметры двигателя. [курсив мой]

так libaio скорее всего действует так, как будто iodepth=1... (видеть https://github.com/axboe/fio/issues/512#issuecomment-356604533 для более подробного объяснения)

Так что же может сдерживать производительность NFS?

Боюсь, что созданное вами задание команды fio сдерживает вас - может быть, вам нужно использовать другие параметры и / или другой механизм ввода-вывода?

PS: очень маловероятно, что вы будете использовать достаточно операций ввода-вывода, чтобы --gtod_reduce=1 будет иметь значение для вас ...