gpt4 book ai didi

java - 如何在 Windows 中获取具有 "tasklist"的进程的 CPU 使用率

转载 作者:可可西里 更新时间:2023-11-01 13:12:54 24 4
gpt4 key购买 nike

我正在用 Java 编写一个程序来定期显示给定进程 ID 的 CPU 和内存使用情况。我的实现调用任务列表。通过以下命令获取内存使用情况非常简单:

tasklist/fi "memusage ge 0"/fi "pid eq 2076"/v

这将返回进程 id 2076 的内存使用情况,我可以将其用于我的任务。通过调用以下命令,我可以提取 CPU 时间。

tasklist/fi "pid eq 2076"/fi "CPUTIME ge 00:00:00"/v

我的问题是,我将如何获取此进程的 CPU 使用率?

我在 StackOverflow 上找到了我的问题的帖子,但答案不清楚,我不明白在命令中输入什么来获得我需要的内容。这个问题在 2008 年得到了回答,2013 年有人要求澄清,但回答问题的人没有回答。

Here是我找到的帖子。

最佳答案

内存就像一个茶杯,可能是满的,也可能是空的,瞬间看一下杯子就可以知道它有多满(这是你的“内存”命令)。

CPU 就像滑雪缆车。无论您是否乘坐电梯,它都会以合理恒定的速度移动。不可能在一次瞬时观察中确定您的使用情况 - 我们需要知道您使用了多长时间(即您的“cputime”命令)。您必须至少使用两次“cputime”命令!

例如:

  • 晚上 7:09,您在进程上运行 cputime 命令,它返回“28 分钟”
  • 晚上 7 点 17 分,您再次对进程运行 cputime 命令,它返回“32 分钟”

从你第一次运行 cputime 命令到第二次,使用时间从 28 分钟增加到 32 分钟——进程已经使用了 4 分钟的 CPU 时间。

从晚上 7:09 到晚上 7:17 的持续时间为 8 分钟 -- 总共有 8 分钟的可用时间,但您的进程只用了 4 分钟:4/8 = 50% 的平均系统使用率。

如果您的系统有多个处理器,那么您可以除以 CPU 总数以获得每个 CPU 的平均值 - 例如双 CPU 系统中 50%/2 = 25% 的平均值。

为了便于编写,我在上面使用了分钟 - 实际上,您可能正在查看进程在仅几毫秒长的时间窗口内使用了多少纳秒的 CPU 时间。

关于java - 如何在 Windows 中获取具有 "tasklist"的进程的 CPU 使用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55720901/

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