当前位置: 技术问答>linux和unix
在LINUX下如何监测运行时间很短的程序的内存使用量
来源: 互联网 发布时间:2015-11-28
本文导语: 比如说像只有一条printf语句的已经编译好的程序 类似 #include int main() { printf("%dn",3); return 0; } 我尝试fork了一个子进程然后用exe系列函数执行上面那个程序 然后父进程监视proc/pid/stat 但因为运行...
比如说像只有一条printf语句的已经编译好的程序
类似
#include
int main() {
printf("%dn",3);
return 0;
}
我尝试fork了一个子进程然后用exe系列函数执行上面那个程序 然后父进程监视proc/pid/stat
但因为运行时间很短 一般检测到子进程信息时子进程已经进入到僵死状态(zombie)资源已经都被释放
不知道有什么方法能 延缓子进程进入到zombie状态的速度 或者有另外检测短时间程序内存占用的方法
类似
#include
int main() {
printf("%dn",3);
return 0;
}
我尝试fork了一个子进程然后用exe系列函数执行上面那个程序 然后父进程监视proc/pid/stat
但因为运行时间很短 一般检测到子进程信息时子进程已经进入到僵死状态(zombie)资源已经都被释放
不知道有什么方法能 延缓子进程进入到zombie状态的速度 或者有另外检测短时间程序内存占用的方法
|
可以用性能优化的工具(Profiler),可以知道每段代码的运行时间,从而知道系统的瓶颈。以前用过一个,忘了名字,帮你查了一下,可以看看:
cprof
http://cprof.sourceforge.net/
或者
Intel VTune Performance Analyzer 8.0 Linux
http://www.9iv.com/down/soft/2164.htm
cprof
http://cprof.sourceforge.net/
或者
Intel VTune Performance Analyzer 8.0 Linux
http://www.9iv.com/down/soft/2164.htm
|
试试fork()以后,主进程根据子进程的id来获得各项信息。
占用内存是一个比较复杂的东西,首先不说动态分配内存和释放,当当几个段和栈的占用就挺麻烦的。
或许你可以一直exec();然后观察他的内存大小。
proc/pid里面的信息也是根据页表来的,如果可能你可以改写这个页表的模块,让他能够以日志的形式输出来。
占用内存是一个比较复杂的东西,首先不说动态分配内存和释放,当当几个段和栈的占用就挺麻烦的。
或许你可以一直exec();然后观察他的内存大小。
proc/pid里面的信息也是根据页表来的,如果可能你可以改写这个页表的模块,让他能够以日志的形式输出来。
|
尝试一下wait3(),wait4()能满足你的要求不?