balanceshiao 2022-01-22 08:30 采纳率: 0%
浏览 9

如何取得工作管理員中處理程序的每支程式的CPU%值

想要請問如何取得工作管理員中處理程序的每支程式的CPU%值,不是取工作管理員詳細資料中的CPU%值哦

我用C#開發,

用ManagementObjectSearcher searcher = new ManagementObjectSearcher($"root\\CIMV2", "SELECT * FROM Win32_PerfFormattedData_PerfProc_Process ");)方法取.

ViewCPU = Math.Round((Convert.ToDouble($"{Convert.ToInt64(obj["PercentProcessorTime"]):n0}") / Environment.ProcessorCount), 2);

->都取到作管理員詳細資料中的CPU%值(與工作管理員中處理程序的每支程式的CPU%值落差蠻大的)

要取的是圖一紅框的值

不是圖二紅框的值

 

謝謝

  • 写回答

1条回答 默认 最新

  • DarkAthena ORACLE应用及数据库设计方案咨询师 2022-01-22 16:40
    关注

    图一中的应该是对一个程序的多个process进行的聚合,比如"LINE",图一左边显示有箭头,展开后,你会发现有多个Process,对应的就是你图二中的多条记录,需要对其进行求和。
    比如主process的pid为1924时,假设下面只有一层子进程,那么对应的数据范围sql应该为

    select * from Win32_PerfFormattedData_PerfProc_Process where IDProcess=1924 or CreatingProcessID=1924
    

    但是如果有多层子进程的话,这个会比较麻烦,需要用到递归,比如查到CreatingProcessID=1924 的所有进程,假设有123和456两个IDProcess,则需要继续向下查CreatingProcessID in (123,456),就这么一直查下去,直到查不出数据,再对前面所有查到的进程进行统计。

    另外,这篇问答中有关于CPU核心数及线程数的讨论

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 1月22日

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器