三个服务器进程占用不超过50%的双核CPU

我有三个进程在Intel Core 2 Duo CPU上运行。 从观看“top”的输出和CPU负载图(通过MRTG,通过SNMP收集数据)的graphics,我可以看到CPU负载不会超过50%,并且在大多数情况下,当这些进程忙于CPU负载50%的上​​限。 我的意思是,CPU负载在早上增长到50%,并在那里呆到深夜。

我的第一个想法是,只有一个核心使用100%,从而给两个CPU的50%。 但是,由于有三个进程正在运行,而且从“顶部”运行,所以我看到两个核心都正在加载,所以情况并非如此。 schedtool显示这三个进程的CPU关联默认为0x03,允许它们使用两个内核。 如果我强制一个进程到一个核心(schedtool -a 0x01),另外两个进程(schedtool -a 0x02),则累积使用量增长超过50%。

为什么三个进程似乎只消耗两个内核的50%? 为什么强迫他们到不同的CPU允许使用增长? 任何提示?

有问题的PS进程是反恐精英服务器。

在CPU亲和力的情况下,操作系统可能会避免一些上下文切换并导致更高的CPU使用率 我怀疑,除非你有很高的networking或磁盘IO,否则这个收益将是显着的。

另外顶部总结了多个核心的数据,我看到了奇怪的舍入/math错误。 在顶部,尝试查看每个核心(顶部命中1)。 这将使您更好地了解每个CPU的使用方法。

从男人

自上次屏幕更新以来,任务占用CPU时间的份额,表示为总CPU时间的百分比。 在真正的SMP环境中,如果“Irix模式”为Off,top将以“Solaris模式”运行,其中任务的CPU使用率将除以CPU总数。 使用“I”交互式命令切换“Irix / Solaris”模式。

可能要检查使用sysstat更多详细信息CPU指标。 mpstat命令将在这里帮助你:

 mpstat -P ALL 01:06:12 PM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s 01:06:12 PM all 0.06 0.00 0.02 1.84 0.00 0.00 0.03 98.05 96.39 01:06:12 PM 0 0.06 0.00 0.02 1.84 0.00 0.00 0.02 98.05 50.98 01:06:12 PM 1 0.58 0.00 0.67 1.81 0.00 0.00 4.10 92.85 50.98 01:06:12 PM 2 0.35 0.00 0.73 1.85 0.00 0.00 4.10 92.98 50.98 01:06:12 PM 3 0.12 0.00 0.38 1.06 0.00 0.00 4.09 94.35 50.98 

会吐出所有的核心。