在Linux中测量进程统计信息

我正在编写比赛软件。 用户的程序被我们的判断系统接收,并通过编译并通过fork()和exec()运行来评估。 父进程等待子(提交的进程)退出,然后清理它。

为了给出有关程序运行的有用信息,我想测量程序使用的CPU时间和峰值内存。 Linux内核是否跟踪这些值? 有没有其他的方式来获取这些信息?

如果在完成时调用wait4()系统调用来获取子ru_utimeru_stime使用子ru_utime的资源使用情况( ru_utimeru_stime保存子ru_utime使用的用户和系统CPU时间)来填充struct rusage结构。

您可以使用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). 

你可以检查顶部的命令。 这可能有一些帮助。