gpt4 book ai didi

c++ - 如何从子进程获取统计信息以衡量资源利用率?

转载 作者:太空宇宙 更新时间:2023-11-04 12:44:17 30 4
gpt4 key购买 nike

我觉得这一定有一个简单的答案,但我真的不知道该如何处理。

对于背景来说,一堆东西是这样的:

Python 脚本 -> C++ 二进制文件 -(fork)-> 我们要测量的实际内容。

本质上,我们有一个 python 脚本,它通过使用 tmp 目录并运行我们正在开发的这个网络软件堆栈的多个实例来模拟环境。该脚本调用主机二进制文件(此处不重要),然后在加载后调用辅助二进制文件。辅助二进制文件可以传递一个参数给守护进程,当它这样做时,它会以通常的方式进行 fork 。

我们需要做的是测量守护进程的 CPU 使用率,但我真的不知道该怎么做。我所做的是定期读取 stat 文件,但由于进程守护进程,我无法使用 echo $! 获取其 PID。使用 ps aux | grep 'thing' 工作正常,但我认为这给了我父进程,因为统计信息如下所示:

1472582561 9455 (nlsr) S 1 9455 9455 0 -1 4218944 394 0 0 0 13 0 0 0 20 0 2 0 909820 184770560 3851 18446744073709551615 4194304 5318592 140734694817376 140734694810512 140084250723843 0 0 16781312 0 0 0 0 17 0 0 0 0 0 0 7416544 7421528 16224256 140734694825496 140734694825524 140734694825524 140734694825962 0

我知道父进程不应该是 PID1,绝对 utime 字段和类似字段应该大于 13 个时钟滴答。这就是让我得出结论,这个进程实际上是父进程,而不是做所有工作的 fork 子进程。

我几乎可以修改任何必要的文件,但由于代码审查限制、设计规范等,我必须更改的文件越少越好。

最佳答案

  1. 可靠获取 child 的PID

    • fork()将子进程的 PID 返回给父进程
  2. /proc/[PID]/stat 获取 CPU 统计信息

    • #14 utime - 在用户代码中花费的 CPU 时间,以时钟滴答
    • 衡量

关于c++ - 如何从子进程获取统计信息以衡量资源利用率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39235336/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com