80 个核心中有 16 个核心未得到利用

80 个核心中有 16 个核心未得到利用

最近我发现我们的服务器不再使用系统中的全部 80 个线程。尽管系统负载很高,但似乎 16 个核心始终处于空闲状态。

这是一台 Dell powerEdge R900 服务器,有 4 个插槽,4 个 10 核 Xeon。因此有 40 个内核,HT 有 80 个线程。(Intel(R) Xeon(R) CPU E7- 4850 @ 2.00GHz)。系统内存为 512GB,运行 Ubuntu 14.04.1 LTS。我还没有重启服务器,我希望避免这种情况。

uname -a
Linux 程序集 3.13.0-35-通用 #62-Ubuntu SMP 2014 年 8 月 15 日星期五 01:58:42 UTC x86_64 x86_64 x86_64 GNU/Linux

我检查了以下内容:

使用 i7z 测量的温度:(无法显示 4 个插槽

来自 cpuinfo 的 CPU 速度 1994.00Mhz
真实频率(不考虑 Turbo)1994 MHz

插槽 [0] - [物理核心数=10,逻辑核心数=20,最大在线核心数=10]
  CPU 乘数 15x || 总线时钟频率 (BCLK) 132.93 MHz
  10 核上启用 TURBO,超线程开启
  不考虑 Turbo 的最大频率 2126.93 MHz (132.93 x [16])
  1/2/3/4/5/6 核的最大 TURBO 倍数(如果启用)为 0x/0x/0x/0x/0x/0x
  实际电流频率 1994.02 MHz(以下最大值)
        核心 [core-id]:实际频率 (倍数) C0% 停机 (C1)% C3 % C6 % 温度
        核心 1 [1]: 1994.01 (15.00x) 100 0 0 0 75
        核心 2 [5]: 1994.00 (15.00x) 100 0 0 0 77
        核心 3 [9]: 1994.02 (15.00x) 100 0 0 0 76
        核心 4 [13]: 1994.00 (15.00x) 100 0 0 0 77
        核心 5 [17]: 1994.00 (15.00x) 100 0 0 0 77
        核心 6 [21]: 1994.00 (15.00x) 97.7 0.404 0 1.86 77
        核心 7 [25]: 1994.00 (15.00x) 94.5 0 1 5.27 77
        核心 8 [29]: 1994.00 (15.00x) 100 0 0 0 76
        核心 9 [33]: 1994.00 (15.00x) 99.8 0 1 1 75
        核心 10 [37]: 1994.00 (15.00x) 100 0 0 0 73
  不考虑 Turbo 的最大频率 2126.93 MHz (132.93 x [16])
  1/2/3/4/5/6 核的最大 TURBO 倍数(如果启用)为 0x/0x/0x/0x/0x/0x
  实际电流频率 1994.02 MHz(以下最大值)
        核心 [core-id]:实际频率 (倍数) C0% 停机 (C1)% C3 % C6 % 温度
        核心 1 [1]: 1994.02 (15.00x) 100 0 0 0 74
        核心 2 [5]: 1994.00 (15.00x) 100 0 0 0 76
        核心 3 [9]: 1994.02 (15.00x) 100 0 0 0 76
        核心 4 [13]: 1994.00 (15.00x) 100 0 0 0 77
        核心 5 [17]: 1994.00 (15.00x) 100 0 0 0 76
        核心 6 [21]: 1994.00 (15.00x) 97 0 1 2.43 77
        核心 7 [25]: 1994.00 (15.00x) 92.9 0 1 6.81 77
C0 = 处理器运行不暂停 00x) 100 0 0 0 75
C1 = 处理器暂停运行(状态 >C0 为省电模式) 1 1 75
C3 = 内核运行时 PLL 和内核缓存均关闭 0 0 73
C6 = C3 中的所有内容 + 保存到最后一级缓存的核心状态
  表格中的以上值是过去 1 秒内的百分比
[core-id] 指的是 /proc/cpuinfo 中的核心 id 号码
读取垃圾值时打印“垃圾值”消息
  Ctrl+C 退出

空闲:最后 16 个核心全部 100% 空闲:

mpstat-p全部1:
平均:CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
平均:全部 70.69 0.00 0.70 0.00 0.00 0.00 0.00 0.00 0.00 28.61
平均:0 92.93 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 7.07
平均:1 94.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 6.00
平均:2 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
平均:3 83.33 0.00 2.08 0.00 0.00 0.00 0.00 0.00 0.00 14.58
平均:4 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
平均:5 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
...........................................................
平均:64 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
平均:65 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
平均:66 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
平均:67 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
平均:68 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
平均:69 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
平均:70 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
平均:71 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
平均:72 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
平均:73 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
平均:74 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
平均:75 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
平均:76 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
平均:77 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
平均:78 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
平均:79 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

最大负载数字:

顶部 - 17:41:48 启动 35 天,6:28,15 个用户,平均负载:77.69、70.48、62.73
任务:总计 1327 个,其中 44 个正在运行,1281 个正在休眠,2 个已停止,0 个僵尸
%Cpu:63.7 us、13.6 sy、0.0 ni、22.3 id、0.2 wa、0.0 hi、0.2 si、0.0 st
KiB 内存:总计 52837942,已使用 52553190,可用 2847524,缓冲区 535660
KiB 交换:总计 78124032,已使用 2105608,可用 76018416。40637328+缓存内存

有时空闲百分比不再是 100,而是少一点,正如您在此处看到的,但大多数情况下它仍保持在 100% 空闲。

平均:CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
平均:全部 70.69 0.00 0.70 0.00 0.00 0.00 0.00 0.00 0.00 28.61
平均:64 0.13 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.87
平均:65 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
平均:66 0.00 0.00 2.63 0.00 0.00 0.00 0.00 0.00 0.00 97.37
平均:67 0.00 0.00 0.13 0.13 0.00 0.00 0.00 0.00 0.00 99.75
平均:68 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
平均:69 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
平均:70 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
平均:71 0.00 0.00 0.12 0.00 0.00 0.00 0.00 0.00 0.00 99.88
平均:72 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
平均:73 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
平均:74 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
平均:75 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
平均:76 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
平均:77 0.00 0.00 0.13 0.00 0.00 0.00 0.00 0.00 0.00 99.87
平均:78 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
平均:79 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

我还运行了这个命令来确保它们都在线:

对于 `seq 01 79` 中的 COUNT;执行 echo 1 > /sys/devices/system/cpu/cpu${COUNT}/online; 

使用 HTop 程序,我可以看到每个线程的 CPU 使用率条形图,并且可以看到 64 个已填充的条形图和 16 个空的条形图(最后 16 个)。

当我尝试在核心 >63 上启动一个进程时也失败了:

root@server:~# taskset -c 63 时间
用法:时间 [-apvV] [-f 格式] [-o 文件] [--append] [--verbose]
       [--portability] [--format=格式] [--output=文件] [--version]
       [--quiet] [--help] 命令 [参数...]
root@server:~# taskset -c 64 时间
任务集:无法设置 pid 0 的亲和力:参数无效
root@server:~# taskset -c 65 时间
任务集:无法设置 pid 0 的亲和力:参数无效

相关主题: https://askubuntu.com/questions/536541/ubuntu-uses-only-2-out-of-4-processor-cores

编辑:事实证明,核心在运行中关闭,但无法正常启动。似乎有进程在这些不可用的核心上运行,但无法在这些核心上启动任何新进程。根据 dmesg 日志,核心被快速禁用并启用。我不得不说,我们本来就是想关闭这些核心,所以我们禁用了这个“功能”。DMESG 示例日志:

[2015 年 1 月 12 日星期一 12:42:40] kvm:禁用 CPU79 上的虚拟化
[2015 年 1 月 12 日星期一 12:42:40] smpboot:CPU 79 现已脱机
....
[2015 年 1 月 12 日星期一 12:43:12] smpboot:启动节点 0 处理器 79 APIC 0xf3
[2015 年 1 月 12 日星期一 12:43:12] kvm:在 CPU79 上启用虚拟化

我们通过以下方式启用/禁用核心:

对于 `seq 64 79` 中的 COUNT;执行 echo 1 > /sys/devices/system/cpu/cpu${COUNT}/online;完成

我们从未将此命令与我们的 16 个不可用核心链接起来,因为通常上述命令可以正常工作。(我们也尝试禁用 powermanager,但这没有帮助)

答案1

并非所有程序都可以使用多线程。例如 php 就是其中之一。如果一个 php 进程需要大量 CPU,则只有 1 个 CPU 会达到最大值。其他 CPU 将处于空闲状态。

相关内容