Linux教程

Linux CPU

本文主要是介绍Linux CPU,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

CPU信息

一台物理机的物理CPU的个数,一个CPU上的核数,一个核上面支持的线程数

有下面的计算公式:

# 总核数 = 物理CPU个数 X 每颗物理CPU的核数 
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数

CPU架构

多个物理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

 

 

 

1、CPU 监控命令: w、 top、 htop、 glances

%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

linux下查看cpu负载及分析

其中load average的三个值分别表示1分钟、5分钟、15分钟的CPU负载情况,是运维需要经常关注的
那么怎么确定这些值展现出什么问题呢?
分析:

对于单核处理器来说(值的大小和cpu的核数有关系) ,可以把值分为3个级别

1)小于1.0 如果值小于1,那么说明系统cpu处理很流畅,不会出现等待,堵塞
2)等于1.0 说明cpu能力刚刚满负荷,
3)大于1.0 说明cpu已经超负荷,进程处理需要等待了,效率低下

对于多核处理器说(假设双核),等于说处理能力增加了一倍,比较的值就是2了,小于2.0才不用担心
    负载:(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分钟才具有参考意义。

 

这篇关于Linux CPU的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!