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

Низкая производительность NFS при последовательном чтении больших файлов

У меня есть сервер NFS3 с несколькими клиентами. Каждый клиент последовательно читает разные большие файлы, и производительность очень низкая.

Вот что я наблюдаю в iostat на сервере для диска, на котором находятся файлы:

Device: rrqm/s  wrqm/s    r/s   w/s  rMB/s  wMB/s avgrq-sz avgqu-sz  await svctm  %util
sdX      24.33    0.00  712.67 0.00  18.41   0.00    52.91    11.95  16.91  1.40 100.00

Как вы видете, %util составляет 100%. В то же время совокупная пропускная способность ввода-вывода (rMB/s+wMB/s) составляет около 18 МБ / с, что в 10-20 раз медленнее, чем у диска.

Это и соотношение rMB/s к r/s, привели меня к выводу, что вместо того, чтобы читать большие куски каждого файла за раз, NFS в конечном итоге читает файлы небольшими кусками с большим чередованием кусков между разными файлами. Это, в свою очередь, приводит к большому количеству обращений к диску, что снижает производительность.

Вы бы сказали, что вывод оправдан доказательствами?

Что вы порекомендуете для решения этой проблемы? Я могу изменить приложение для чтения и настроить параметры NFS как на сервере, так и на клиенте. Я использую RedHat 5.6 с ядром 2.6.18, которое Я считаю пределы rsize до 32 КБ (я был бы счастлив, если бы ошибся).

редактировать: Вот как все выглядит, когда только один клиент читает один файл:

Device: rrqm/s  wrqm/s     r/s   w/s    rMB/s  wMB/s avgrq-sz avgqu-sz  await svctm  %util
sdX     343.33    0.33 1803.33  0.67   105.78   0.00   120.09     0.91   0.50  0.31  56.47

Как видите, пропускная способность намного лучше, и %util также намного ниже.

Более быстрые диски, больше памяти в коробке. Думаю, ваш вывод верен - вы обязаны искать.

Сколько памяти у вашего сервера NFS по сравнению с вашим рабочим набором? Ваш рабочий набор поместится в кеш?

Что такое внутреннее хранилище? Вы говорите, что он обеспечивает пропускную способность ~ 180-360 МБ / с, но как он работает для случайного ввода-вывода? Я бы предложил использовать что-то вроде фио чтобы получить представление. поисковик также интересно визуализировать ввод / вывод. Но если вы сможете избежать удара по дискам, тем лучше.