Как отслеживать создание процессов и статистику с помощью модуля ядра - PullRequest
0 голосов
/ 28 августа 2018

Я написал модуль ядра для контроля временных рядов процессора и памяти. Кроме того, я хотел бы регистрировать все создания процессов (и их метаданные, такие как pid, cmdline, ...), а также использовать их статистику, такую ​​как общее количество операций ввода-вывода и использования ЦП.

Основные вопросы: могу ли я создать своего рода слушателя для процесса создания и выхода? Особенно на выходе, мне также понадобится метаинформация для процесса. Как это можно сделать?

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Я знаю, что вы говорите о мониторинге процессов с помощью модуля ядра Linux.

Но я думаю, что стоит упомянуть модуль python psutil . Даже если это решение пользовательского пространства.

Это очень полный инструмент, который позволяет отслеживать процессы об используемых ими ресурсах, памяти, диске, процессоре.

Некоторые примеры из документации :

Получение загрузки процессора для некоторого процесса

>>> import psutil
>>> p = psutil.Process()
>>> # blocking
>>> p.cpu_percent(interval=1)
2.0
>>> # non-blocking (percentage since last call)
>>> p.cpu_percent(interval=None)
2.9

Получение информации о памяти

>>> import psutil
>>> p = psutil.Process()
>>> p.memory_info()
pmem(rss=15491072, vms=84025344, shared=5206016, text=2555904, lib=0, data=9891840, dirty=0)

И очень интересно open_files

>>> import psutil
>>> f = open('file.ext', 'w')
>>> p = psutil.Process()
>>> p.open_files()
[popenfile(path='/home/giampaolo/svn/psutil/file.ext', fd=3, position=0, mode='w', flags=32769)]

Время создания процесса

>>> import psutil, datetime
>>> p = psutil.Process()
>>> p.create_time()
1307289803.47
>>> datetime.datetime.fromtimestamp(p.create_time()).strftime("%Y-%m-%d %H:%M:%S")
'2011-03-05 18:03:52'

Конечно, вы можете запросить информацию для любого процесса, запущенного в вашей целевой системе, просто укажите pid для psutil.Process, например: psutil.Process(pid)

0 голосов
/ 27 сентября 2018

То, что вы описываете, звучит жутко похоже на систему учета процессов Linux , которая уже существует в ядре. Если это не совсем подходит, лучше всего рассмотреть возможность его расширения, а не создавать что-то совершенно новое.

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

...