有没有一种方法来查询或计算的CPU使用单个进程每次每个核心分别?
例如,
名称 - - - - Core1 - Core2 - Core3 - Core4
firefox.exe - 0.5% - - 0.1% - - 0.2% - - 0.3%
我知道一个名为"Process Explorer"的程序(Mark Russinovich)可以做到这一点,但我怎么能在C#中做到这一点?我已经看过System.Diagnostics命名空间了,但是找不到符合我要求的东西.
这是我想要实现的目标的图片,

我正在编写一个程序,它使用.NET性能计数器来获取特定进程的CPU,内存和网络使用情况.
例如,要获取CPU和内存数据Explorer,我创建如下性能计数器:
PerformanceCounter PC = new PerformanceCounter();
PC.CategoryName = "Process";
PC.CounterName = "% Processor Time";
PC.InstanceName = "Explorer";
PerformanceCounter PC = new PerformanceCounter();
PC.CategoryName = "Process";
PC.CounterName = "Working Set - Private";
PC.InstanceName = "Explorer";
Run Code Online (Sandbox Code Playgroud)
不幸的是,Process没有属性categoryName允许我获得该进程的网络使用.我可以使用网络接口categoryName来获取任何特定NIC上的整体网络使用情况,但无法将其隔离到任何给定的进程.
我是Monit的新手,并试图了解它是否提供了一种处理PID未知的同名多个进程的方法.我理想的Monit行为是:
观察名为"x"的每个进程,并重新启动任何内存使用率超过X的进程
如果那是不可能的,我也会满足于:
观察名为"x"的每个进程,如果其中任何内存使用量超过X,则重新启动所有进程
我看到的大多数Monit示例都依赖于PID,或者只希望一个进程具有指定的名称.
我也对其他可能比Monit更适合的工具的建议感兴趣.
谢谢!
在Windows机器上运行的Java库需要记录有关操作系统的信息,如CPU负载,JVM等占用的内存,我非常肯定Java本身无法获取,因为它是特定于操作系统的.
此库的日志中需要此信息,以便向客户端指出某些操作失败,因为库无法获取足够的资源.
不可能选择JVM,即我们不能要求我们的客户端应该使用实现Windows操作系统特定功能的特定JVM.
是否有可以通过JNI使用的Windows库(DLL)或API?
我们也可以用C++或C#自己实现一个DLL,在哪里我需要看看如何最有效地完成这个?
编辑:我需要访问有关JVM本身进程的数据,我猜这只能通过本机Windows API获取.所以我想我必须实现一个小的C程序并通过JNI将其作为本机DLL链接.有什么提示吗?
我想听听你对程序生命监控的看法.
这就是场景.你有一个通常有效的简单程序,这意味着它写得很好,处理异常等等.
如果你想确保这个程序永远有效,你将如何运作?
没有像crontab这样的外部工具可用,但可以添加任何开销.
使用另一个持续"ping"主程序的程序?触摸文件并检查另一个程序进行文件修改?
你如何确保第二个程序始终有效?
所以,来吧,告诉我你在这方面的意见或最佳实践!
作为脚注,我将用Python编写这个程序,但这是一个通用的问题!