top获取实时数据的位置

top应用程序从哪里得到它在Linux上的数据? 我会对实时CPU加载/ PID数据感兴趣(我读了/ proc / pid手册页中的所有文档,但是信息不存在)。

该pid是一个JBoss。 我需要轻量级的数据(很容易导出)。

Solutions Collecting From Web of "top获取实时数据的位置"

如proc(5)中所记录 ,在/proc/(pid)/stat您有以下字段:

 utime %lu 

在用户模式下计划此进程的时间量(以时钟周期为单位)(除以sysconf(_SC_CLK_TCK),包括访客时间,guest_time(运行虚拟CPU的时间,请参见下文),以便不知道的应用程序的客人时间字段不会从他们的计算中失去那个时间。

 stime %lu 

在内核模式下调度此进程的时间量,以时钟滴答度量(除以sysconf(_SC_CLK_TCK))。

要获取特定进程的CPU使用率,请使用这些字段。 顶级进程将聚合所有线程的CPU使用率; 对于每个线程的细分,你可以在/proc/(pid)/task找到其他的线程。

如果您希望在CPU时间超过某个阈值时收到通知,则可以使用clock_getcpuclockid获取其CPU时钟的句柄,然后使用timer_create或timerfd在达到指定级别时收到通知。 但是请注意,跨进程cputime定时器是POSIX规范中的一个可选功能,可能不被支持(我还没有测试过)。

如果有疑问,请使用strace(1)!

 open("/proc/2/stat", O_RDONLY) = 4 open("/proc/2/statm", O_RDONLY) = 4 open("/proc/3/stat", O_RDONLY) = 4 open("/proc/3/statm", O_RDONLY) = 4