最近我发现我们的服务器不再使用系统中的全部 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 将处于空闲状态。