背景
以下文章来源于涛歌依旧近,一位同事急匆匆跑过来跟我说:糟糕了,服务器CPU的使用率达了。
我心想不可能啊,CPU有那么多核,怎会跑满?于是看了一眼,结果虚惊一场。
这位同事看到的,并非指整个CPU使用率到了,而是指CPU某些核的使用率到了.
趁此机会,我来聊聊与CPU相关的概念,对很多软件开发和运维人员来说,这些概念是必须要掌握的:
CPU主频
多个CPU
多核CPU
逻辑核(超线程)
大小端
以一款CPU为例,看下具体参数:
CPU主频(时钟频率)
在上面这些参数中,人们熟知的是CPU主频(时钟频率)。买电脑时,肯定需要看CPU主频是多少。
我们知道:CPU时钟越快,产生上升沿/下降沿的速度就越快,就能更快地迫使其它器件做相应工作。
CPU的时钟,就像龙舟比赛的击鼓人,击鼓频率越快,就迫使划船的人跟上节奏,结果龙舟也越快。
从CPU参数可以看到,该CPU有12个物理核,每个物理核对应2个逻辑核(超线程技术)。所以,从外部看,该CPU有24个核(逻辑核)。
也就是说,该CPU有12个物理上的运算器&控制器,有24个逻辑上的运算器&控制器。
多个CPU
我们看linux命令lscpu给出的信息:
Socket(s): 2
可以看到,在这台服务器上,总共插了2个CPU, 这2个CPU是物理上的CPU, 人眼可以看到,手也可以触摸到:
多核CPU
Core(s) per socket: 12
逻辑核(超线程)
Thread(s) per core: 2
那么,在上面这台服务器中,有多少个逻辑核呢?
CPU(s): 48
操作系统对核的分配
:~$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
: 1
CPU(s) list:
per core: 1
per socket: 1
: 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6Model: 79
Model name: Intel(R) Xeon(R) CPU E5-26xx v4
Stepping: 1CPU MHz: 2394.446
BogoMIPS: 4788.89
Hypervisor vendor: KVM
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 4096K
NUMA node0 CPU(s):
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc rep_good nopl eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch bmi1 avx2 bmi2 rdseed adx xsaveopt
~$ :
CPU大小端
Byte Order: Little Endian