背景极限次数由工艺
我目前正在重构遗留.NET应用程序所使用的处理器。该应用程序在相对较长的时间段内(长达几个小时)执行复杂的数学计算,在此期间,多个线程上的处理器使用率几乎连续发生。
每个用户都有一个专门用于运行应用程序实例(他们使用其他机器运行所有其他应用程序)的8核心计算机。该应用程序使用共享系统帐户执行,允许支持人员在需要时通过远程桌面连接到本机并监视应用程序(这经常发生)。
当应用程序进程启动时,它设置它自己的处理器亲缘关系被设置为使得进程被允许使用除一个处理器以外的所有处理器。例如。在8处理器机器上,亲缘关系被设置为0x007F(01111111),其将应用程序限制到处理器1到7并且阻止其执行处理器8上的任何线程。被排除的处理器总是由亲和性中的最高位表示的处理器值。
这样做的理由是,排除一个处理器可以让服务器在服务远程桌面会话时以及使用任何其他可能需要随时使用的临时监控工具时保持更高的响应速度(Baretail, Process Explorer等)。
问题
这是可能产生给出一个CPU的资源成本的应用带来多少好处?
很显然,我可以执行一些测试来收集经验证据,但是测试机器的可用性是有限的,应用程序的行为有很多外部依赖性,这意味着密集型处理器使用的时间很难确定。正确地对基准进行测试所需的时间和资源可能远不是微不足道的。出于这个原因,我正在寻找理由或反对这样做的理由。对我来说,这似乎是一个坏主意,因为应用程序被阻止使用整个CPU的资源,而这些资源不可能被其他进程完全占用。我想删除处理器限制并允许Windows无限制地管理CPU分配。然而,如果我的怀疑是正确的,我需要能够提出一些令人信服的论据来推销这种变化。
我刚才的这种情况的经验是,你不应该限制你的计算密集型应用程序。即使CPU处于100%利用率,您的操作系统也应该完全响应,因为前台线程优先。 – 2011-05-01 14:06:07