sun*_*der 5 .net performance windows-services memory-management cpu-usage
我有一个与应用程序性能和智能相关的问题.
我已经创建了一个窗口服务,如果我在3个不同的配置机器上运行它.我希望它利用适当的机器资源(CPU和内存).
Say Machine 1(M1)具有单核,1 GB内存.
Machine2(M2)有两个内核,2 GB内存.
Machine3(M3)有4个内核,4 GB内存.
现在当我的服务运行时,它应该使用适当的资源.就像cpu使用机器是1%一样,用户应该高达50%或更多.如果它已经50%只使用30%.ram也是如此.但永远不要超过90%或其他限制.
基本上我写了一个多线程服务,现在不关心机器资源并继续使用它.我想在其中加入这种情报.
请帮我解决你的想法.
谢谢
正如Archeg所说,根据处理器的数量,您可以增加线程数。但根据 CPU 活动增加线程数量是错误的方法。
这样看——CPU 调度程序以毫秒为单位分配时隙。如果系统上其他进程的负载较低,则会为您的进程提供更多时间。时期。如果有很多进程,您获得的时间段就会减少。你不应该用超过必要的线程来破坏它。
你需要做的就是决定你想做什么。服务是否有时间限制?如果是这样,那么在负载较重的系统中,您可以使用的 CPU 时间较少,而在空闲的系统中,您可以在同一秒内使用更多的 CPU 时间。请注意:如果您的服务执行 I/O,则您的服务本身可能会限制它可以使用的 CPU 数量。
使用 RAM,您可以执行类似操作,考虑到系统有多少可用 RAM,将算法切换为使用较少处理或处理速度更快但需要更多内存的算法(反之亦然)。
关键是,除了更好的调度程序(这是许多聪明人多年来一直在寻找的东西)之外,没有“独立于服务”的方法来进行这种智能扩展。但是,您可以编写了解当前系统约束并相应更改行为的服务。