一台物理机的物理CPU的个数,一个CPU上的核数,一个核上面支持的线程数
有下面的计算公式:
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
多个物理CPU,各个CPU通过总线进行通信,效率比较低,如下
多核CPU,不同的核通过L2 cache进行通信,存储和外设通过总线与CPU通信,如下:
多核超线程,每个核有两个逻辑的处理单元,两个线程共同分享一个核的资源,如下:
从上面执行的结果来看,证明我使用的cpu有2 * 6 = 12核,每个核有2个超线程,所以有24个逻辑cpu。
查看内 存信息 cat /proc/meminfo
CPU型号的查询方式[root@localhost ~]# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
40 Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz
# 查看物理CPU个数 [root@localhost ~]# cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l 2 [root@localhost ~]# grep 'physical id' /proc/cpuinfo | sort -u | wc -l 2 # 查看每个物理CPU中core的个数(即核数) [root@localhost ~]# cat /proc/cpuinfo| grep "cpu cores"| uniq cpu cores : 10 # 查看逻辑CPU的个数 [root@localhost ~]# cat /proc/cpuinfo| grep "processor"| wc -l 40
[root@localhost ~]# lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 40 On-line CPU(s) list: 0-39 Thread(s) per core: 2 #thread就是每个core上的硬件线程数,即超线程 Core(s) per socket: 10 # Core就是平时说的核,双核、四核等,就是每个CPU上的核数 座: 2 # == Socket(s): 2 Socket就是主板上插CPU的槽的数量 2个cpu NUMA 节点: 2 厂商 ID: GenuineIntel CPU 系列: 6 型号: 79 型号名称: Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz 步进: 1 CPU MHz: 1201.110 CPU max MHz: 3100.0000 CPU min MHz: 1200.0000 BogoMIPS: 4399.96 虚拟化: VT-x L1d 缓存: 32K L1i 缓存: 32K L2 缓存: 256K L3 缓存: 25600K NUMA 节点0 CPU: 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38 NUMA 节点1 CPU: 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch epb cat_l3 cdp_l3 intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm cqm rdt_a rdseed adx smap xsaveopt cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local dtherm ida arat pln pts [root@localhost ~]# 对操作系统来说,其逻辑CPU的数量就是Socket*Core*Thread
%Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st us 用户态: 跟用户的操作有关 0.3% sy 系统态: 跟内核的处理有关 0.3% id CPU 空闲: 99.3%
监控什么:
us: user state 用户态信息 40% #例如某个用户 ssh远程到主机执行命令 就是用户态任务 (优先)
sy: system state 内核态信息 40% #MySQL进程 关注内核信息
id: idle 空闲状态 20% #空闲状态
注意:https://blog.csdn.net/qq_39823627/article/details/78736650 用户态和内核态 https://www.cnblogs.com/gizing/p/10925286.html
top
top命令结果展示
htop命令结果:
glances
glances命令结果展示
linux下查看cpu负载有两个命令可以看:uptime 和 top
其中load average的三个值分别表示1分钟、5分钟、15分钟的CPU负载情况,是运维需要经常关注的
那么怎么确定这些值展现出什么问题呢?
分析:
1)小于1.0 如果值小于1,那么说明系统cpu处理很流畅,不会出现等待,堵塞
2)等于1.0 说明cpu能力刚刚满负荷,
3)大于1.0 说明cpu已经超负荷,进程处理需要等待了,效率低下
负载:(CPU处理任务过多) a 利用文件进行查看:(监控) cat /proc/loadavg 0.00 0.01 0.05 负载值CPU核数有关 1分钟平均 5分钟平均负载 15分钟平均负载 eg: 服务器4核的服务器 -- 负载值3左右,就要关注 服务器128核的服务器 -- 负载值100(数据库服务器) b 利用命令进行查看: [root@localhost ~]# w 12:41:06 up 38 min, 2 users, load average: 0.00, 0.01, 0.05
那么1/5/15分钟以哪个值为准呢?
一般5和15分钟才具有参考意义。