当前位置: 首页 > 面试题库 >

如何在Linux中计算一个进程及其所有子进程的CPU使用率?

姜松
2023-03-14
问题内容

我想知道一个固定时间段内一个进程和所有子进程的CPU使用率。

更具体地说,这是我的用例:

有一个过程在等待用户执行程序的请求。为了执行程序,该进程调用子进程(一次最多5个),并且每个子进程执行这些已提交程序中的1个(假设用户一次提交了15个程序)。因此,如果用户提交15个程序,则将运行3批,每批5个子进程。子进程在完成程序执行后立即被杀死。

我想知道在执行这15个程序期间,父进程及其所有子进程的CPU使用率%。

有没有简单的方法可以使用top或其他命令来执行此操作?(或者我应该附加到父进程的任何工具。)


问题答案:

您可以/proc/PID/stat在PID是父进程的进程ID的位置找到此信息。假设父进程正在等待其子进程,则可以从 utimestime
cutimecstime 计算出CPU的总使用量:

utime%lu

在用户模式下已安排此过程的时间,以时钟滴答数为单位(除以sysconf(_SC_CLK_TCK)。这包括来宾时间,guest_time(运行虚拟CPU所花费的时间,请参见下文),以便应用程序不知道访客时间字段中的,不会因其计算而浪费时间。

stime%lu

在内核模式下已计划此过程的时间,以时钟滴答数为单位(除以sysconf(_SC_CLK_TCK))。

可爱%ld

该进程的等待子进程已在用户模式下安排的时间量,以时钟滴答数为单位(除以sysconf(_SC_CLK_TCK)。(另请参见times(2)。))包括来宾时间cguest_time(运行虚拟设备所花费的时间)
CPU,请参见下文)。

cstime%ld

已在内核模式下调度了此进程的等待子进程的时间,以时钟滴答数为单位(除以sysconf(_SC_CLK_TCK))。

有关详细信息,请参见proc(5)联机帮助页。



 类似资料:
  • 问题内容: 我想以编程方式[在C中]为Linux中给定进程ID计算CPU使用率%。 如何获得给定进程的实时CPU使用率%? 为了进一步说明: 我应该能够确定所提供的processid或进程的CPU使用率。 该进程不必是子进程。 我想要“ C”语言的解决方案。 问题答案: 您需要从中解析出数据。这些是前几个字段(来自内核源代码): 您可能在和/或之后。您还需要从中读取行,如下所示: 这将告诉您已在各

  • 问题内容: 我正在尝试按以下方式计算Android中进程的CPU使用率,但是由于产生的输出,我不确定它是否正确。 要将吉菲转换为秒:吉菲/赫兹 第一步: 使用文件的第一个参数获取正常运行时间。 第二步: 从中获取每秒的时钟滴答数。 第三步: 从中获取过程参数花费的总时间 第四步: 从 Linux 2.6之后的时钟滴答声中除以sysconf(_SC_CLK_TCK)表示的值,获取进程的startti

  • 问题内容: 我对此感到困惑。我已经读到,当父进程创建子进程时,子进程会获得其父进程的地址空间的副本。复制在这里意味着什么?如果我在下面使用代码,那么它将在所有情况下都在堆上打印变量“ a”的相同地址。即在孩子和父母的情况下。那么这里发生了什么? } 问题答案: 子级将获得父级地址空间的精确副本,在许多情况下,该副本可能以与父级地址空间相同的格式进行布局。我必须指出,每个内存都有自己的虚拟地址空间,

  • 本文向大家介绍计算Linux上进程中的线程数,包括了计算Linux上进程中的线程数的使用技巧和注意事项,需要的朋友参考一下 Linux进程可以可视化为程序的运行实例,其中Linux中的每个线程不过是进程的执行流。您知道如何在Linux环境中查看每个进程的线程数吗?有几种计数线程数的方法。本文讨论如何读取有关Linux上进程的信息以及如何计算每个进程的线程数。 阅读过程信息 要读取过程信息,请使用“

  • 问题内容: 我能否查看当前python应用程序正在使用的处理器使用量(占最大值的百分比)? 场景:只要不消耗超过X%的CPU能力,我的主机就可以允许我运行我的应用程序,因此我希望它“关注自身”并放慢速度。那么我如何知道该应用程序使用了多少CPU? 目标平台是* nix,但是我也想在Win主机上进行。 问题答案: 从(2.5)手册中: 次() 返回一个五元组的浮点数,以秒为单位指示累计(处理器或其他

  • 问题内容: 在我正在研究的基于Linux的项目中,我需要能够找到我的所有子进程。每次启动时都进行记录是不可行的-需要在事实之后找到它们。这必须是纯C语言,而我想不读取/ proc就这样做。有谁知道如何做到这一点? 问题答案: 我发现您的评论认为,将进程的创建记录为奇数是不可行的,但是如果您真的做不到(可能是因为您不知道将创建多少个进程,并且不想保留内存) ),那么我可能会打开所有与该glob匹配的