以内核空间的百分比计算进程的CPU使用率

问题描述:

任何人都可以指出我如何能够以百分比的形式计算特定进程的CPU使用率?该代码是一个内核模块,所以我正在寻找一种更好的方式,而不是从/proc解析数据或使用系统调用。我想知道是否可以使用task_struct和linux内核函数的组合来计算它。以内核空间的百分比计算进程的CPU使用率

task_struct中有用户时间(UTIME),系统时间(STIME),START_TIME和...,这里是https://*.com/a/16736599/4490542

+0

算法最困难的是寻找确切的功能使用,为了找到在/ proc目录中找到的等效信息。特别是经过的时间和单位的转换。这段[源代码](http://lxr.free-electrons.com/source/kernel/tsacct.c#L29)帮了很多。但仍然存在一个问题。在为了计算百分比而抛出长时间浮点数时,我得到错误:“错误:SSE寄存器返回,SSE禁用” –

+1

@PedramEsmaeeli没有直接的方式获得进程的CPU负载,即使用户空间应用程序使用这些参数来计算,见955行https://github.com/hishamhm/htop/blob/e0209da88faf3b390d71ff174065abd407abfdfd/ProcessList.c,但问题是内核空间中的浮点计算(你提到的错误),在内核中的浮点并不容易。看看内核的加密核心,那里有软件fpu –