在 Solaris 10 上从 C 获取 CPU 使用统计信息
在 Solaris 10 和 C 语言中,我想定期查询数字,例如
- 该操作系统进程中特定 LWP 的 CPU 使用情况。
- 该操作系统进程的内存使用情况。
我已经知道如何通过打开 /proc/pid/psinfo 并从中读取 (pr_rssize) 来实现后者,但是有没有办法实现前者?
过去,我分叉了 prstat 的副本,解析其输出并将其读回到我的 C 代码中。当我想要查询越来越多的此类信息时,这变得越来越乏味,而且感觉完全错误。当然有一种方法可以通过一些简单的 C 代码来做到这一点。
谢谢你的帮助。 尼克B
On Solaris 10, and in C, I'd like to regularly query numbers like
- The CPU usage for specific LWPs within that OS process.
- The memory usage for that OS process.
I already know how to do the latter by opening /proc/pid/psinfo and reading from that (pr_rssize), but is there a way to implement the former?
In the past I have forked off a copy of prstat, parsed the output from that and read it back into my C code. As I'm looking to query more and more of this type of information, this is getting increasingly tedious, and just feels plain wrong. Surely there is a way to do this with some simple C code.
Thanks for any help.
NickB
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在 Solaris 上,可以通过读取
/proc/
pid/lwp/
获取特定于 lwp 的ps
信息lwpid/lwpsinfo
。该文件包含一个lwpsinfo
结构,其中包括:请参阅 proc(4) 了解更多详细信息。
On Solaris, the lwp-specific
ps
information can be be obtained by reading/proc/
pid/lwp/
lwpid/lwpsinfo
. This file contains alwpsinfo
structure which includes:See proc(4) for additional details.
当您寻求 C 解决方案时,也许您可以查看 perl 模块 Solaris::Procfs 看看它如何提取信息?
While you ask for a C solution, maybe you could look into the perl module Solaris::Procfs to see what it does to extract information?
mem 用法.. 你可能会找到 /usr/include/sys/procfs.h psinfo_t 结构
C 代码,获取流程&每个线程的cpu使用情况。
参考:https://bitbucket.org/a3217055/illumos-2/src/d4f95bf4d6ec7ef0f01e5ddf22813ac641edf019/usr/src/cmd/prstat/prstat.c?at=master&fileviewer=file-view-default< /a>
<代码> <代码>
>
mem usage.. you may find /usr/include/sys/procfs.h psinfo_t structure
C code, get process & each thread cpu usage.
reference : https://bitbucket.org/a3217055/illumos-2/src/d4f95bf4d6ec7ef0f01e5ddf22813ac641edf019/usr/src/cmd/prstat/prstat.c?at=master&fileviewer=file-view-default