top从哪里获取实时数据
top
应用程序在 Linux 上从哪里获取数据?我对实时 CPU 负载/pid 数据感兴趣。(我阅读了 /proc/pid 手册页中的几乎所有文档,但信息不在那里)。
pid是一个jboss。我需要轻量级数据(以便轻松导出)。
Where does top
application gets it's data on Linux? I would be interested in real-time CPU load/pid data.(I read allmost all documentation in /proc/pid man page, but the info isn't there).
The pid is a jboss. I need the data lightweight (to be exported easily).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果有疑问,请使用 strace(1)!
If in doubt, use strace(1)!
如 proc(5) 中所述,在文件
/proc/(pid )/stat
你有字段:要获取特定进程的 CPU 使用情况,请使用这些字段。顶层进程将聚合所有线程的 CPU 使用率;对于每个线程的细分,您可以在
/proc/(pid)/task
中找到其他线程。如果您希望在 CPU 时间超过某个阈值时收到通知,可以使用 clock_getcpuclockid 获取其 cpu 时间时钟的句柄,然后 timer_create 或 timerfd 当达到指定级别时收到通知。但是,请注意,跨进程 cputime 计时器是 POSIX 规范中的可选功能,可能不受支持(我尚未测试)。
As documented in proc(5), in the file
/proc/(pid)/stat
you have the fields:To get CPU usage for a specific process, use those fields. The toplevel process will aggregate CPU usage over all threads; for a per-thread breakdown, you can find the other threads in
/proc/(pid)/task
.If you would prefer to be notified when CPU time exceeds some threshold, you can use clock_getcpuclockid to get a handle to its cpu time clock, then timer_create or timerfd to be notified when it hits a specified level. However, note that cross-process cputime timers are an optional feature in the POSIX specification and may not be supported (I've not tested).