运行 i2.8xlarge EC2 实例类型时,我预计 32 个 CPU 可用且可用。在一个实例上的一次测试中,我只看到 16 个 CPU 被利用。我曾经stress -c31 -t 30
生成一些 CPU 负载,但只看到 32 个 CPU 中的 16 个被使用。具体来说,htop 显示 CPU 1-8 和 17-24 被 100% 消耗,而 CPU 9-16 和 25-32 处于空闲状态。在另一个 i2.8xlarge(相同操作系统)上,我确认htop
所有 32 个 CPU 都在使用中。
lscpu
输出:
架构:x86_64 CPU 操作模式:32 位、64 位 字节顺序:小端 CPU:32 在线 CPU 列表:0-31 每核线程数:2 每插槽核心数:8 插座:2 NUMA 节点:1 供应商 ID:GenuineIntel CPU 系列:6 型号:62 步进:4 CPU频率:2500.086 保费:5264.79 虚拟机管理程序供应商:Xen 虚拟化类型:完整 L1d 缓存:32K L1i 缓存:32K L2 缓存: 256K L3缓存:25600K NUMA 节点 0 CPU:0-31
答案1
我们能够追踪问题所在。我们从一个使用较小实例(只有一个处理器插槽)创建的 AMI 启动。问题是numa=off
/boot/grub/grub.conf 中有一个剩余的启动参数。删除此参数并重新启动实例后,我们能够利用所有 32 个 CPU(所有超线程)。