Я хотел бы провести анализ нашего сервера NFS, чтобы помочь отследить потенциальные узкие места в наших приложениях. Сервер работает под управлением SUSE Enterprise Linux 10.
Мне интересно узнать следующее:
- К каким файлам обращаются какие клиенты
- Пропускная способность чтения/записи для каждого клиента
- Накладные расходы, вызванные другими вызовами RPC
- Время, затраченное на ожидание других запросов NFS или дискового ввода-вывода для обслуживания клиента
Я уже знаю о статистике, доступной в, /proc/net/rpc/nfsd
и на самом деле я написалСообщение блогаописывая их подробно. Я ищу способ копнуть глубже и помочь понять, какие факторы влияют на производительность, наблюдаемую конкретным клиентом. Я хочу проанализировать роль сервера NFS в производительности приложения в нашем кластере, чтобы я мог придумать способы его лучшей оптимизации.
решение1
Просто идея, попробуйте прослушать nfs-трафик с помощью wireshark. Может быть, это скажет вам, какой пользователь получил доступ к какому файлу:
tshark -R nfs -i eth0
решение2
Я должен сказать, что из всех различных утилит *stat, доступных одному, nfsstat, безусловно, худшая! Она дает вам возможность посмотреть на кучу счетчиков, но это все. Если вы посмотрите на них дважды, ВАМ придется потрудиться, чтобы выяснить, насколько изменился каждый счетчик, а если вы хотите узнать скорость изменения, вам нужно будет разделить на количество секунд между выборками. По справедливости, nfsstat появился много лет назад, когда все было еще довольно сырым, и теперь ему мешает никто не хочет менять формат вывода, потому что это, вероятно, сломало бы многое.
Что касается использования collectl для мониторинга nfs, он предоставляет вывод nfsstat в гораздо более удобном для чтения формате, но что еще лучше, вы можете позволить ему работать часами или днями и воспроизводить собранные вами данные в фоновом режиме. Что касается запроса на просмотр того, что делают процессы, collectl также может собирать данные о процессах, включая объем ввода-вывода, выполняемый каждым процессом, и даже воспроизводить их, показывая самых активных пользователей ввода-вывода. Вы также можете использовать функцию top в реальном времени.
Если вы хотите посмотреть тематику дисков, вы также можете это сделать и отобразить все на скоординированном дисплее.
Проверьте это... -марк
решение3
собирать(особенно егоПодсистема NFS) — очень хорошая утилита, которая может быть полезна для вашего анализа, но она ненетсоответствуют вашему списку требований. Я не знаю ни одной утилиты Linux, которая бы это делала.
(Позвольте мне добавить это примечание не по теме: естьявляетсяпрограммное обеспечение, которое соответствует вашим требованиям: на базе DTrace от SunАналитика (pdf)- но к сожалению не доступен на Linux. Вы найдете много отличных примеров вБлог Брендана Грегга(которые иллюстрируют возможности этого инструмента.)
решение4
По моему мнению, это как раз подчеркивает проблему современных инструментов. Здесь упоминается по крайней мере 3, включая nfsstat, iostat и iotop. Затем вскользь упоминаются wireshare и nfsreplay. Разве это не похоже на нормальный способ что-то делать? Помимо wireshark, который является отдельной категорией, разве вы не предпочтете 1 инструмент?
Для начала, хотя я и нахожу вывод iostat очень полезным, его слишком трудно читать со всеми этими .00 в числах. Collectl сообщает те же самые данные, но отформатированные гораздо удобнее для глаз. Вы уже знаете, что я думаю о nfsstat, и поскольку collectl может воспроизводить любые данные, нет необходимости в утилите 'replay'. Что касается 'iotop', collect также может показывать процессы, отсортированные по всему, что включено в ввод-вывод.
Итак, вот вам все это, включая временные метки. Если вам нужен более точный интервал мониторинга, вы всегда можете уменьшить выборку до 0,1 или 0,5 секунд или что-то среднее, хотя вы создадите больше накладных расходов, если будете отслеживать процессы так быстро, но это было бы с любой утилитой мониторинга процессов.
И последний бонус — все, что вы соберете с помощью collectl, вы можете загрузить в электронную таблицу и легко построить график ИЛИ использовать colplot, который является частью collectl-utils.
-отметка