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

为进程设置处理器相关性及其效果

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

    我有一个应用程序,它有一个UI模块和其他支持服务。这些其他服务存在内存泄漏和其他线程同步问题。因此,在某些机器中,特别是四核、双核机器中,服务偶尔会崩溃。

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

    但是作为一项解决方案,我们为其中的2个服务设置了处理器亲和力,并观察到在这之后并没有发生崩溃。

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

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

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

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

    在您的情况下,由于服务是多线程的,它们可能会受到性能惩罚,也可能不会受到性能惩罚——这将取决于实际的设计,具体取决于它们是否依赖于并行执行的多个线程。

        2
  •  1
  •   peterchen    14 年前

    (可能更适合serverfault.com)

    因为服务创建多个线程,所以很可能。

    此外,即使系统没有负载,它的响应时间也可能增加。If the CPU you are bound to is busy with another thread, it has to wait for that thread to give up its time slice. 这可能会在(或a)线程处理的许多小请求中变得显著。

    感知到的结果可能是微妙的或破坏性的:您可能会运行一段时间,但当请求达到峰值时,依赖服务(如果有的话)可能会减慢。