我有一个与应用程序性能和智能相关的问题. 我已经创建了一个窗口服务,如果我在3个不同的配置机器上运行它.我希望它利用适当的机器资源(CPU和内存). Say Machine 1(M1)具有单核,1 GB内存
我已经创建了一个窗口服务,如果我在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,将算法转换为使用较少处理或处理速度较快但需要更多内存的算法(反之亦然).
关键在于,除了更好的调度程序之外,没有“服务独立”的方式来实现这种智能扩展(这是许多聪明人多年来一直关注的事情).但是,您可以编写了解当前系统约束并相应更改行为的服务.