专题
在上一次的方案中,我用setrlimit来限制子进程对资源的使用量,用非阻塞的wait4函数来进行进程状态的连续监控,还有WIFEXIT, WTERMMSG等一组宏,可以做到对子进程的精确监视与限制,可是内存使用峰值却不能准确测出来。原方案是这样的,在每一轮wait4的时候查看/proc/$pid/statm或者/proc/$pid/status文件,其中保存有进程的内存使用情况。这样做有一个弊端,就是当进程运行时间相当短的话,是测不到有用的值的,因为我用vfork来产生子进程,此时父进程和子进程是并行的,这样一来,一旦两者相差的时间片比较多,便会有很大误差了,这就好比对连续信号的采样,肯定会有信息丢失的,原方案于是被否决了。那怎么样才能真正正确的监视呢?除非能够对子进程进行逐指令的监控,一旦发现有内存分配相关的syscall,便作统计,显然,当前进程内存占用 = 累计分配内存 - 累计释放内存。
首先介绍一下这个项目:这是我的毕业设计,一个B/S系统,用于ACM/ICPC(国际大学生程序设计竞赛)的再线评测与竞赛。

by Pradeep Padala
Created 2002-11-01 02:00
翻译: Magic.D E-mail: adamgic@163.com


分页: 1/2 第一页 1 2 下页 最后页 [ 显示模式: 摘要 | 列表 ]