我和同事一直在讨论各种各样的问题,他们建议我们允许企业中的一些cpu密集型进程轮询CPU使用率并在CPU使用率低时执行他们的任务。我的反点是,虽然理想系统中的CPU使用率表示给定服务器上的系统活动水平,但实际上它在实际系统中具有太多的不一致性(在短时间内达到峰值和下降)是一个有效的指标什么时候应该运行cpu密集型进程此外,我还说过操作系统旨在管理线程和应用程序之间的处理器争用。我的建议只是在下班后运行该过程,以避免降低用户在白天的体验。
我的问题是,cpu使用是否可以作为进程何时应在企业环境中运行的有效指标?如果我是对的,有点正确,或只是不正确,那将是一个很好的知识......
编辑:这些应用程序是.NET服务以及SQL Server预定作业。
答案 0 :(得分:2)
不,不是(所以是的,你是对的)。
有很多方法可以导致问题,但最重要的是:
操作系统正在尝试平衡 资源分配。为了做到 它有一个调度算法 它使用了当前的视图 资源使用。你描述的是什么 运行第二个调度算法 那将与第一个战斗 (OS调度程序)过度分配 中央处理器。这可能会导致奇怪的反馈 的效果。
仅使用流程使用不需要 考虑到其他资源,如 记忆。当一个进程运行它 不只是显示其他进程 通过使用处理器周期。它的 工作数据集正在与之作斗争 其他进程要保存在内存中 和掉外交换。你可以认真 降低性能(和延迟 特别是)如果你的其他过程 因为CPU是,所以激活你的任务 没有使用它会导致他们的数据 被分页。
为什么重新发明轮子?这是 究竟是什么优先级/ 闲置处理是为了发明的。如果 你只想让你的过程占用 后台CPU然后将其设置为运行 最低优先级并允许 操作系统来安排它。