Linux:新服务器上的 CPU 负载共享

Linux:新服务器上的 CPU 负载共享

我们有一个新的 Linux el6.x86_64 服务器,将所有作业(主要是 java/C++/python/shell)进程移至该新服务器后,我们观察到进程运行缓慢。例如,在以前的服务器上运行的 python 脚本将在 30 分钟内完成,在新服务器上需要 4 小时才能处理。

下面是来自新服务器的 CPU 使用率统计信息(使用 top 捕获),其中一次仅显示一个活动任务。我需要你的帮助来理解以下内容:

  • 如果有32个CPU,不是应该有32个任务并行运行吗?
  • 所有这些 CPU 均在线,并通过 /sys/devices/system/cpu 进行验证。是否还有其他系统将 CPU 可用性设置得很低?
 
top - 02:04:04 up 5 days,  6:56, 32 users,  load average: 3.63, 3.91, 3.47
Tasks: 1208 total,   1 running, 1207 sleeping,   0 stopped,   0 zombie
Cpu0  : 23.4%us,  3.0%sy,  0.0%ni, 73.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  : 15.4%us,  5.6%sy,  0.0%ni, 79.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  : 12.2%us,  1.0%sy,  0.0%ni, 86.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  :  3.9%us,  0.3%sy,  0.0%ni, 95.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu4  : 19.3%us,  2.0%sy,  0.0%ni, 78.4%id,  0.0%wa,  0.0%hi,  0.3%si,  0.0%st
Cpu5  :  6.9%us,  0.3%sy,  0.0%ni, 92.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu6  :  1.3%us,  0.0%sy,  0.0%ni, 98.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu7  :  0.3%us,  0.0%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu8  :  0.3%us,  0.3%sy,  0.0%ni, 99.0%id,  0.3%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu9  :  0.7%us,  0.0%sy,  0.0%ni, 99.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu10 :  0.7%us,  0.0%sy,  0.0%ni, 99.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu11 :  0.7%us,  0.0%sy,  0.0%ni, 99.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu12 :  0.7%us,  0.0%sy,  0.0%ni, 99.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu13 :  1.0%us,  0.3%sy,  0.0%ni, 98.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu14 :  1.0%us,  0.0%sy,  0.0%ni, 99.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu15 :  0.7%us,  0.0%sy,  0.0%ni, 99.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu16 : 42.2%us,  4.0%sy,  0.0%ni, 53.5%id,  0.0%wa,  0.0%hi,  0.3%si,  0.0%st
Cpu17 :  0.7%us,  0.7%sy,  0.0%ni, 98.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu18 : 26.0%us,  2.0%sy,  0.0%ni, 71.7%id,  0.0%wa,  0.0%hi,  0.3%si,  0.0%st
Cpu19 :  0.7%us,  0.3%sy,  0.0%ni, 99.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu20 : 53.8%us,  4.0%sy,  0.0%ni, 41.2%id,  0.0%wa,  0.0%hi,  1.0%si,  0.0%st
Cpu21 : 29.3%us,  1.3%sy,  0.0%ni, 69.4%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu22 :  2.0%us,  0.7%sy,  0.0%ni, 97.4%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu23 :  0.7%us,  0.0%sy,  0.0%ni, 99.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu24 :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu25 :  0.7%us,  1.0%sy,  0.0%ni, 98.4%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu26 :  0.7%us,  1.3%sy,  0.0%ni, 98.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu27 :  0.3%us,  0.0%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu28 :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu29 :  0.3%us,  0.0%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu30 :  2.6%us,  0.0%sy,  0.0%ni, 97.4%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu31 :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  396867664k total, 391584344k used,  5283320k free,   414764k buffers

答案1

这些进程不会利用额外的核心来运行得更快,除非它们是通过使用线程或其他并行机制来设计的。

由于以下原因,Python 通常不擅长利用多核:吉尔(全局解释器锁)。您可以尝试使用“多处理”Python 模块来实现更多的软件优化。

除了购买具有更高时钟速度的 CPU 之外,您无法采取太多措施来提高单核(非 I/O 受限进程)的性能。但有时您会发现内存访问和内存缓存瓶颈。例如,如果您的计算机包含多个通过以下方式连接在一起的 CPUNUMA连接,并且进程在这些 CPU 之间频繁移动,可能会出现 CPU 必须频繁访问内存的情况NUMA通过其他 CPU 的连接(连接到另一个 CPU 的内存的访问速度可能比直接连接到 '' 中央处理器)。

尝试使用 cpuset(1) 命令将进程固定到特定 CPU 可能是值得的。如果这有效,您还应该研究各种 Kenel NUMA 行为调整参数。

编辑添加:另一个需要关注的领域是电源管理,也许由于省电过程,CPU 频率正在降低。您可以使用 cpupower(1) 命令检查和设置 VPU 电源管理设置。

相关内容