[英]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.