最近项目所需,需要在内核中查看指定进程所占用内存大小及占用CPU的使用比率,和OOP信息,
当前进程使用的内存堆栈可以从task_struct->mm_struct中获得,但是cpu的使用比率和OOP信息从什么地方可以
获得呢,或者通过什么方法可以计算出来,请有指教。 谢谢
dyron
_______________________________________________
Linux 内核开发中文邮件列表
Linux-...@zh-kernel.org
http://zh-kernel.org/mailman/listinfo/linux-kernel
Linux 内核开发中文社区: http://zh-kernel.org
--
这是zh-kernel邮件列表内容的只读归档,如果想参与讨论请访问http://zh-kernel.org进行订阅。
Subscription settings: http://groups.google.com/group/zh-kernel/subscribe?hl=zh-CN
嗯,谢谢,不过我想在内核态下去查看,不过你给我提供了思路,我去查看一下这些系统调用的实现。
在 2010年4月27日 下午12:49,Wenyi Liu <qings...@gmail.com>写道:
top命令似乎满足你的要求。
>
> oops看dmesg
我想在内核中获取这一切,并非用户态。谢谢大家的帮助!
在 2010年4月27日 下午6:59,Tao Yinqing <liuqin...@gmail.com>写道:
> /proc/<PID>/smaps
> /proc/<PID>/maps
> Tao Yinqing(陶寅清)
cpu使用率你可以自己算。
task_struct里有utime和stime,然后每一个cpu有自己的user time和system time。
对于oops信息,没必要在内核来读,这是用户空间的事儿,比如syslogd。
请问正确的计算方法,谢谢。
old_ptime = p->utime + p->stime
old_sys_time = utime + stime
//do something
new_ptime = p->utime + p->stime
new_sys_time = utime + stime
cpu_usage = (new_ptime - old_ptime) / (new_sys_time - old_sys_time)
上面的系统utime和stime来自 kstat_cpu(i).cpustat.{user,system}。
还有,最后一个除是整除,你或许需要反过来。