我试图理解vCPU和CPU单元的含义,以及这些概念与物理CPU的联系。
我的ECS集群有一个集群实例,即m5ad.large EC2实例。下面是这个实例上lscpu
命令的输出:
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 2
Core(s) per socket: 1
Socket(s): 1
NUMA node(s): 1
Vendor ID: AuthenticAMD
CPU family: 23
Model: 1
Model name: AMD EPYC 7571
Stepping: 2
CPU MHz: 2892.092
BogoMIPS: 4399.83
Hypervisor vendor: KVM
Virtualization type: full
L1d cache: 32K
L1i cache: 64K
L2 cache: 512K
L3 cache: 8192K
NUMA node0 CPU(s): 0,1
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch topoext vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr arat npt nrip_save
这个实例有一个处理器(Socket(s): 1
),每个套接字有一个核心,每个内核有两个线程,这就是为什么实际的线程数是number of sockets * number of cores per socket * number of threads per core = 1 * 1 * 2 = 2
。
因此,如果我理解正确的话,这个值也是许多可用的vCPU,而vCPU是内核线程。
正如它在ECS文档中所说的,CPU单元的数量可以计算为number of vCPU * 1024
。在这种情况下,有2048个CPU单元。
我的问题是什么是CPU单元,为什么我需要乘1024,处理器和CPU单元之间的物理连接是什么?
发布于 2019-12-04 19:53:37
在运行容器时,CPU分配通常使用ECS文档中描述的CPU单元:
1024个CPU单元对应1 vCPU。
在任务定义中,您可以使用CPU单元(例如1024)或作为vCPU字符串(例如1 vCPU)指定CPU分配。
您不需要转换为单元,ECS可以为您做到这一点。如果您更愿意考虑使用vCPU分配CPU,这是完全支持的。
https://stackoverflow.com/questions/59175035
复制相似问题