【问题标题】:Setting processor affinity for a process and its Effects为进程及其效果设置处理器亲和性
【发布时间】:2010-06-23 12:05:04
【问题描述】:

我有一个具有 UI 模块和其他支持服务的应用程序。这些其他服务存在内存泄漏和其他线程同步问题。因此,在某些机器上,尤其是四核、双核机器上,服务会时不时地崩溃。

我知道解决此问题的最佳方法是清理内存泄漏和同步问题。

但作为一种解决方法,我们为其中 2 个服务设置了处理器亲和性,并观察到在那之后没有发生崩溃。

现在我的问题是 由于我将它们限制为仅使用一个处理器,我的服务是否会受到性能影响?

编辑 1:注意:这些服务是多线程的。

【问题讨论】:

    标签: c++ process


    【解决方案1】:

    这当然取决于这些服务是否依赖线程。如果它们是单线程的,您不会注意到太大的差异。

    在您的情况下,由于服务是多线程的,因此它们可能会或可能不会受到性能损失 - 这取决于实际设计,特别是它们是否依赖于并行执行的多个线程。

    【讨论】:

      【解决方案2】:

      (可能更适合 serverfault.com)

      因为服务很可能会创建多个线程。

      此外,即使系统没有负载,它的响应时间也可能会增加。如果你绑定的 CPU 正忙于另一个线程,它必须等待那个线程放弃它的时间片。对于由(或)线程处理的许多小请求,这可能会变得很明显。

      感知到的结果可能是微妙的或毁灭性的:您可能会在一段时间内运行良好,但在请求高峰时会崩溃,相关服务(如果有的话)可能会变慢。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-13
        • 1970-01-01
        • 2013-03-19
        • 2014-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-28
        相关资源
        最近更新 更多