繁体   English   中英

测量Linux中的进程统计信息

[英]Measuring process statistics in Linux

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

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

如果调用wait4()系统调用以在子struct rusage完成时重新获取子struct rusage ,它将使用子ru_utime的资源使用来填充struct rusage结构( ru_utimeru_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM