2016-10-07 77 views
0

我正在运行一个具有200个线程的单个服务器进程,这些进程以下列方式自动在CPU之间传播。有什么我可以做的更好地利用CPU核心?

CPU Utilization

enter image description hereenter image description here

有什么我可以做,以提示操作系统跨其他节点的CPU的蔓延呢?节点1的16个CPU似乎有点遗憾。

+1

这也可能是故意的。由于内存延迟,跳到节点周围对性能不利。 – Mysticial

+0

机器上有16个内核。在我看来,出于某种原因,操作系统无法使用内核来并行运行2个线程,以启用超线程。线程在做什么? – dcernahoschi

+0

每个线程表示一个连接的TCP/IP设备。大多数时间他们坐在那里什么都不做:睡5 ms,检查它的套接字是否有任何活动(0 ms),如果没有,则回到下一个5 ms的睡眠状态。这是所有200个线程的基本处理循环。最好的情况下(性能明智)将没有任何设备上的活动。最糟糕的情况是,所有200个线程处理命令。 – Eduardo

回答

0

严格来说,强制传播的方法是通过设置进程的线程关联性。我并不是说这是最佳方案,或者它比以前的设置更好,但至少我设法让进程在所有可用内核中运行其线程。这可能会导致线程运行在可访问不同内存位置的节点上,但我认为它会比拥有16个闲置内核更小。我将不得不衡量这一点,但至少我设法向我想要实现的目标前进了一步。

使用由NUMA节点设置过程亲和力使用所有节点的所有核心之后:更换相同的设置后

Usage by NUMA nodes

使用由逻辑内核:

Usage by logical cores

相关问题