Аналіз продуктивності сервера Linux NFS


22

Я хотів би зробити аналіз нашого сервера NFS, щоб допомогти виявити потенційні вузькі місця в наших програмах. На сервері працює SUSE Enterprise Linux 10.

Я шукаю знати те, що:

  • Які файли отримують доступ до яких клієнтів
  • Читання / запис пропускної спроможності на основі кожного клієнта
  • Накладні витрати, накладені іншими дзвінками RPC
  • Час, витрачений на очікування інших запитів NFS або дискового вводу / виводу для обслуговування клієнта

Я вже знаю про статистику, наявну в /proc/net/rpc/nfsdнасправді, і я написав повідомлення в блозі, де їх детально описував. Я шукаю - це спосіб глибше копатись і допомогти зрозуміти, які фактори сприяють продуктивності, яку бачив конкретний клієнт. Я хочу проаналізувати роль, яку відіграє сервер NFS у виконанні програми на нашому кластері, щоб я міг придумати способи якнайкраще її оптимізувати.


Це схоже на те, що було написано для крана системи. Документи трохи лайно, але я б припустив, що ви можете щось пробити, щоб зробити такий аналіз, використовуючи його. sourceware.org/systemtap/examples/keyword-index.html
Cian

Відповіді:


2

Просто ідея, спробуйте обнюхати трафік nfs за допомогою проводки. Ви можете сказати, який користувач отримав доступ до якого файлу:

tshark -R nfs -i eth0

2

Я мушу сказати про всі різні * stat утиліти, доступні одному, nfsstat - це найгірше! Це дає вам можливість переглянути купу лічильників, але це все. Якщо ви подивитесь на них двічі, ВАМ потрібно виконати роботу, намагаючись зрозуміти, наскільки змінився кожен лічильник, і якщо ви хочете знати швидкість зміни, то вам потрібно розділити на кількість секунд між зразками. Справедливо кажучи, nfsstat датується багатьма роками, коли все ще були досить грубими, і зараз їх перешкоджає ніхто, хто не хоче змінювати вихідний формат, тому що він, ймовірно, може зламати багато речей.

Що стосується використання collel для моніторингу nfs, то він забезпечує вихід nfsstat у набагато простішому для читання форматі, але що ще краще, ви можете дозволити йому працювати годинами чи днями та відтворювати зібрані вами дані у фоновому режимі. Що стосується запиту, щоб побачити, які процеси виконуються, collel також може збирати дані про процеси, включаючи те, скільки вводить / виводить кожен процес, і навіть відтворювати їх, показуючи найкращих користувачів вводу / виводу. Ви також можете використовувати головну функцію в режимі реального часу.

Якщо ви хочете переглянути тему дисків, яку я збираю, можна зробити це і показати все на узгодженому дисплеї.

Перевірте це ... -мітка


2

collectionl (особливо його підсистема NFS ) - це дуже приємна утиліта, яка може бути корисною для аналізу, але не відповідає вашому списку вимог. Я не знаю жодної утиліти Linux, яка це робить.

(Будь ласка , дозвольте мені додати це поза темою примітки: Там це програмне забезпечення , яке відповідає вашим вимогам: від Sun DTrace на основі аналітики (PDF) . - але , на жаль, не є на Linux Ви знайдете безліч чудових прикладів в блозі Брендана Грегга , що ілюструє можливості цього інструменту.)



1

На мою думку, це точно підкреслює проблему з сьогоднішніми інструментами. Тут ми згадуємо щонайменше 3, включаючи nfsstat, iostat та iotop. Потім проходили згадки про передачу проводів та nfsreplay. Це справді звучить як звичайний спосіб робити речі? Окрім wireshark з категорією, яка є власною, ви б не віддали перевагу одному інструменту?

Для відкривачів, хоча я вважаю, що вихід йостату є дуже корисним, важко читати з усіма цими цифрами .00. Collectl повідомляє ті самі дані, але відформатувати їх набагато простіше. Ви вже знаєте, що я думаю про nfsstat, і оскільки collectionl може відтворювати будь-які дані, у програмі "повтор" не потрібно. Що стосується "iotop", колекція також може показувати процеси, відсортовані за будь-яким включеним I / O.

Тож у вас все це теж у комплекті з часовими позначками. Якщо вам потрібен більш точний інтервал моніторингу, ви можете завжди відкрутити вибірку до 0,1 або 0,5 секунд або будь-що між ними, хоча ви будете генерувати більше накладних витрат, якщо стежити за процесами цього швидко, але будете використовувати будь-яку утиліту моніторингу процесів.

І остаточний бонус - це все, що ви збираєте з collel, ви можете завантажити в електронну таблицю і легко побудувати план АБО використовувати коллопт, який є частиною колекцій-утиліти.

-знак


1

Ви можете спробувати nfswatchз http://nfswatch.sourceforge.net

Ви можете ознайомитись із прикладом результатів на веб-сторінці http://prefetch.net/blog/index.php/2009/06/16/monitoring-nfs-operations-with-nfswatch/

nfswatchце на зразок top(хоча я не впевнений, чи є пакетний режим). Після запуску ви можете змінити зміни дисплея, натиснувши клавішу (наприклад, "c" для відображення клієнтів NFS за допомогою вашого сервера NFS).

У моєму короткому тестуванні, nfswatchсхоже, не працює з NFSv4.


1
Цікава пропозиція. Власне, сам автор каже, що NFSv4 не підтримується, а інструмент не оновлювався близько 3 років. Шкода, як це було б дуже корисно!
Тонін

1

На даний момент кращих відповідей у ​​мене немає, проте ви можете точно відслідковувати IO диска

iostat -mx <delay in sec.> <devices>

Він дає дуже корисні показники, зокрема середній розмір черги та час очікування (в мс) для ваших внесків. Це досить легко показує, чи є ваші диски вузьким місцем, і якщо вузьке місце - це чисельність введення чи пропускна здатність.

Тоді с

netstat -plaute | grep nfs

Ви побачите клієнтські з'єднання та байти, передані від кожного клієнта в режимі реального часу. петля на ньому для безперервних даних. Було б досить легко зробити сценарій, який надає постійні дані ... над цим працюю :)

Тепер, щоб отримати IO за процес, ви можете використовувати відмінний iotop . Ви все ще повинні знайти спосіб узгодити nfsd процеси з клієнтами.

Щодо того, до яких файлів отримує доступ, який клієнт, я застряг. Насправді файли, які зараз читаються / записуються з клієнта NFS, навіть не відображаються у вихідних даних.

Просто для розширення на netstat, використовуйте watch -d, щоб побачити, як все змінюється та сортується за хостом

watch -d "netstat -plaute | grep nfs | sort -k 4,5"

Це найкраще рішення, яке я знайшов поки що, щоб з’ясувати, який хост викликає трафік на NFS. Тоді я можу зайти до клієнта, щоб дізнатися, до якого файлу він має доступ. Дякую!
peschü

0

Ви можете перевірити nfsreplay. Це може допомогти вам зрозуміти, що відбувається. Також ви можете знайти інформацію і посилання тут корисно

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.