Получение nfsstat-подобной статистики для ext3 и других файловых систем - PullRequest
1 голос
/ 08 мая 2011

Для тех, кто не знаком с nfsstat: он просто подсчитывает количество вызовов определенных функций. Таким образом, можно получить статистику об операциях ввода-вывода NFS и, таким образом, использовать их для анализа производительности.

Я бы хотел сделать что-то подобное в более общем смысле. Я хотел бы как-то посчитать количество, например "стат" звонки. Если возможно, подсчет на точку монтирования. Однако я не уверен, с чего начать. Я обладаю достаточными навыками программирования, используя C против библиотеки libc, но мне не хватает знаний о ядре Linux.

Я чувствую, что это должно быть сделано через загружаемый модуль ядра, но я не уверен, что API ядра предоставляет возможность подключаться к таким системным вызовам. Или я должен использовать inotify для этого (не отслеживает статистические звонки)?

С чего начать?

1 Ответ

1 голос
/ 08 мая 2011

Чтобы наблюдать за всеми системными вызовами, происходящими в системе, вы можете использовать подсистему аудита Linux , чтобы отслеживать конкретный системный вызов. Вы можете настроить фильтры, такие как ограничение часов деревом каталогов. Документация довольно скудная; начните с страницы руководства пользователя audctl или, возможно, этого руководства . В последних выпусках поставляется пакет auditd. Установите его и убедитесь, что демон auditd работает, затем выполните

auditctl -A exit,always -F dir=/mount/point -S stat

и наблюдайте, как звонки регистрируются в /var/log/audit/audit.log (или там, где ваш дистрибутив настроил это).

С другой стороны, если вас интересуют только системные вызовы, выполняемые определенным процессом (и, возможно, его подпроцессами), используйте strace .

strace -s9999 -estrace -f mycommand

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

...