计算CPU使用率

Moo*_*oon 5 .net c# algorithm cpu-usage

我们的业务模式需要根据CPU小时/使用情况向用户收费.

最初我在考虑简单地使用StopWatch然后将经过的时间用作度量单位.

但我用这种方法看到的问题是,在5000个用户点击服务器的那一天,同一段代码的经过时间将高于仅有50个用户点击服务器的夜间.

其他选项是根据对传入的数据用户执行的迭代向用户收费.此方法也存在一些问题.

  • 某些函数不需要对数据进行任何迭代.
  • CPU使用率x + y低于x + y * z.

在C#/ .Net中计算CPU使用率信息的好方法是什么,这样对于同一操作的所有用户,无论服务器的负载如何,它都保持不变?

可能是实际装配级别指令的总量?有没有办法在C#中获取该信息?

其他什么接近,建议你可以分享?

非常感谢您对此进行调查.

Joe*_*oey 14

执行您的用户想要在单独的进程中运行的任何内容,并在完成该过程后查找其CPU时间.这也与挂钟时间不同,因为它只考虑了进程实际在CPU上运行的时间.

那些不愿阅读文档的人的最小例子:

ProcessStartInfo psi = new ProcessStartInfo(@"C:\Blah\Foo.exe");
Process p = Process.Start(psi);
p.WaitForExit();
TimeSpan time = p.TotalProcessorTime;
p.Close();
Run Code Online (Sandbox Code Playgroud)

但是,您可能希望以异步方式运行它.

无需估计,猜测或黑魔法.无论如何,你无法可靠地计算它.

  • 你能分享一些在单独进程中执行代码并获得CPU时间的例子吗? (2认同)