为什么Amazon EC2 i2.8xlarge上的所有32个“cpus”有时不被使用?

运行一个i2.8xlarge EC2实例types,我期望32 cpu可用和可用。 在一次testing中,我只看到了16个cpus。 我使用stress -c31 -t 30来产生一些cpu负载,但是只使用了32个cpus中的16个。 具体来说,htop显示cpus 1-8和17-24被100%占用,cpus 9-16和25-32空闲。 在不同的i2.8xlarge(相同的操作系统)我用htop证实,所有32 cpu被使用。

lscpu输出:

架构:x86_64
 CPU操作模式:32位,64位
字节顺序:Little Endian
 CPU(s):32
在线CPU列表:0-31
每个核心的线程数:2
核心(s)每个sockets:8
套接字:2
 NUMA节点:1
供应商ID:GenuineIntel
 CPU系列:6
型号:62
步进:4
 CPU MHz:2500.086
 BogoMIPS:5264.79
pipe理程序供应商:Xen
虚拟化types:完整
 L1dcaching:32K
 L1icaching:32K
二级caching:256K
三级caching:25600K
 NUMA node0 CPU(s):0-31

我们能够追查到这个问题。 我们从一个小实例(只有一个处理器插槽)创build的AMI启动。问题是/boot/grub/grub.conf中有一个剩余的numa=off引导参数。 一旦这个参数被删除,实例重新启动,我们能够利用所有32 cpus(所有hyperthreads)。