[英]Measuring process statistics in Linux
我正在构建编程竞赛软件。 用户的程序由我们的判断系统接收,并通过编译并通过fork()和exec()运行来评估。 父进程等待子进程(提交的进程)退出,然后清除它。
为了提供有关程序运行的有用信息,我想测量程序使用的CPU时间和峰值内存。 Linux内核是否跟踪这些值? 有没有其他方法来获取此信息?
如果调用wait4()
系统调用以在子struct rusage
完成时重新获取子struct rusage
,它将使用子ru_utime
的资源使用来填充struct rusage
结构( ru_utime
和ru_stime
保存子ru_utime
使用的用户和系统CPU时间)。
您可以使用getrusage()
或acct()
( 此处提供更多信息 )系统调用
一种低技术(但简单)的解决方案是定期以批处理模式转储top
的输出并在之后解析它。
我猜,时间(1)程序可能会有所帮助。 它比轮询顶部简单得多。
手册页摘录:
Disregarding the
name of the utility, GNU makes it output lots of useful information,
not only about time used, but also on other resources like memory, I/O
and IPC calls (where available).
您可以查看top命令。 这可能会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.