2016-12-16 4 views
0

Может ли кто-нибудь указать, как я могу вычислить использование процессора определенного процесса в процентах? Код - это модуль ядра, поэтому я ищу лучший способ, чем анализировать данные с /proc или использовать системный вызов. Мне было интересно, могу ли я рассчитать его с помощью комбинации task_struct и функций ядра Linux.вычислить использование процессора в процентах в пространстве ядра

ответ

0

task_struct есть время пользователя (utime), системное время (STIME), start_time и ..., вот алгоритм https://stackoverflow.com/a/16736599/4490542

+0

Большая часть трудностей были для нахождения точных функций для использования, для того, чтобы найти эквивалентную информацию о том, что находится в каталоге/proc. особенно прошедшее время и преобразование единиц. Этот фрагмент [исходного кода] (http://lxr.free-electrons.com/source/kernel/tsacct.c#L29) очень помог. Но остается одна проблема. При кастовании долго плавать, чтобы вычислить процент, я получаю сообщение об ошибке: «ошибка: возврат SSE-регистра с отключенным SSE» –

+1

@PedramEsmaeeli Прямой путь получения загрузки процессора невозможен, даже приложения пользовательского пространства используют эти параметры для расчета, см. строку 955 https://github.com/hishamhm/htop/blob/e0209da88faf3b390d71ff174065abd407abfdfd/ProcessList.c, но проблема в вычислениях с плавающей запятой в пространстве ядра (ошибка, о которой вы упомянули), с плавающей точкой в ​​ядре непросто. посмотрите на криптовое ядро ​​ядра, там есть программное обеспечение fpu –

Смежные вопросы