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

Различия клиентов NFSv3 в производительности чтения / записи

Я забочусь о нескольких серверах, которые относительно интенсивно используют файловую систему NFS.

Во время кризиса один сервер отправляет фильтру около 2 тыс. Операций чтения + 2 тыс. Операций записи в секунду. Согласно nfsiostat, в это время RTT чтения и записи увеличиваются с обычных 5-10 мс до 50-100 мс как для чтения / записи. Среднее время выполнения в соответствии с nfsiostat резко отличается для чтения и записи: чтение около 200 мс, запись от 100 до 200 с.

Теперь из того небольшого, что я понимаю, среднее время выполнения в nfsiostat - это, по сути, RTT + время ядра (очереди RPC и т. Д.). Говоря о RPC - я вижу точно такое же поведение на RH5.8 (бэклог RPC около 5 КБ при кранче) и RH6.3 (бэклог RPC 0 всегда).

Итак - вопрос: в чем может быть причина того, что время выполнения чтения / записи NFS так сильно отличается?

(Вызовы NFS выполняются проприетарным приложением, в котором у меня нет особой видимости. То же самое относится и к файловому серверу (NetApp - аутсорсинг). Трассировка ядра, вероятно, тоже не будет вариантом)

Заранее большое спасибо.

РЕДАКТИРОВАТЬ: чтобы уточнить, и поскольку я получаю некоторые ответы, касающиеся производительности NFS в целом - единственная часть, которая меня действительно интересует, это: согласно nfsiostat doco RTT - это «... продолжительность с момента, когда ядро ​​клиента отправляет запрос RPC, до времени он получает ответ ". а Avg Exe - это «... время с момента, когда клиент NFS выполняет запрос RPC к своему ядру, до завершения запроса RPC, включая время RTT, указанное выше». (http://man7.org/linux/man-pages/man8/nfsiostat.8.html).

Мое (возможно, наивное) понимание состоит в том, что после RTT сервер не работает. Так что же делает клиент NFS, что Avg Exe настолько отличается для чтения / записи, когда RTT одинаков?

На основе описанного сценария возможно наличие нескольких факторов. sync и async параметры могут существенно повлиять на производительность, как и nolock вариант при монтировании NFS.

На производительность также могут повлиять проблемы с правами собственности на файлы и разрешениями, связанные с ACL для файлов и / или использованием root_squash и no_root_squash варианты при монтаже. Хотя, если бы это было так, вероятно, где-нибудь в журналах были бы свидетельства этого.

Также могут возникнуть проблемы с перемещением файлов в память и из памяти. В зависимости от последовательности операций и количества физической и виртуальной памяти также может происходить много сбоев.

Если трафик продолжается и файловые операции не очищены должным образом / зависают / занимает слишком много времени для завершения операций записи, количество файлов, открытых в данный момент, может начать выходить за пределы, поддерживаемые ядром, это можно проверить, запустив:

cat /proc/sys/fs/file-max

Если это значение низкое на сервере или клиенте NFS, возможно, стоит увеличить его, чтобы посмотреть, улучшится ли производительность. В зависимости от сетевой среды реализация определенных политик QoS потенциально может повлиять на производительность (хотя, вероятно, маловероятно).