代码之家  ›  专栏  ›  技术社区  ›  Achilles

使用处理器来自动调度进程是一个好的实践吗?

  •  0
  • Achilles  · 技术社区  · 14 年前

    我和一位同事有过类似的争论,他建议我们允许企业中一些CPU密集型进程在CPU使用率较低的情况下调查CPU使用率并执行它们的任务。我的反驳是,虽然理想系统中的CPU使用率表示给定服务器上的系统活动水平,但实际上,实际系统中的不一致性(短时间内的峰值和下降)太大,无法有效地指示何时运行CPU密集型进程。此外,我还指出,操作系统的设计是为了管理线程和应用程序之间的处理器争用。我的建议只是在下班后运行这个过程,以避免在白天降低用户的体验。

    我的问题是,CPU使用率能否作为一个有效的指示器,来指示进程何时应该在企业设置中运行?很高兴知道我是对的,是对的,还是只是不正确…

    编辑:这些应用程序是.NET服务以及SQL Server计划的作业。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Andrew    14 年前

    不是的(所以是的,你是对的)。

    它有很多方法可以导致问题,从我的头上:

    • 操作系统试图平衡 资源分配。为了做 它有一个调度算法 使用当前视图 资源使用情况。你描述的是 运行第二个调度算法 会和第一个打架的 (操作系统调度程序)过度分配 CPU。这会导致奇怪的反馈 影响。

    • 只是使用过程使用并不需要 考虑到其他资源,如 记忆。当一个进程运行它时 不只是显示其他进程 使用处理器周期。它是 数据的工作集正在与 要保存在内存中的其他进程 和不可交换的。你可以说真的 降低性能(和延迟 尤其是)如果你 激活您的任务,因为CPU 不在使用中,它会导致它们的数据 被呼出。

    • 为什么要重新发明轮子?这是 准确地说是什么优先级/ 空闲处理是为发明的。如果 你只想让你的过程开始 后台CPU然后将其设置为 最低优先级和允许 操作系统会安排它。