Linux运维17:观察CPU状态

Posted YoungerChina

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux运维17:观察CPU状态相关的知识,希望对你有一定的参考价值。

      CPU 是影响 Linux 性能的主要因素之一,本节将介绍几个可以用来查看 CPU 性能的命令。

1.lscpu

      此命令用来显示cpu的相关信息,scpu从sysfs和/proc/cpuinfo收集cpu体系结构信息,命令的输出比较易读命令输出的信息包含cpu数量,线程,核数,套接字和Nom-Uniform Memeor Access(NUMA),缓存等

语法:

lscpu

示例:

[root@node1 ~]# lscpu 
Architecture:          x86_64
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:    1
Core(s) per socket:    2
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 142
Model name:            Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz
Stepping:              12
CPU MHz:               2304.003
CPU max MHz:           0.0000
CPU min MHz:           0.0000
BogoMIPS:              4608.00
Hypervisor vendor:     VMware
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
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 dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf 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 epb fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap xsaveopt xsavec xgetbv1 dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp
[root@node1 ~]#

2. top

       默认进入top时,各进程是按照CPU的占用量来排序的。在top基本视图中,按键盘数字“1”可以监控每个逻辑CPU的状况

top - 21:47:40 up  1:07,  1 user,  load average: 0.00, 0.01, 0.05
Tasks:  93 total,   2 running,  91 sleeping,   0 stopped,   0 zombie
%Cpu0  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1865312 total,  1639232 free,    93912 used,   132168 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  1613916 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                       
    27 root      20   0       0      0      0 S   0.3  0.0   0:07.65 kworker/0:1                                                                   
    28 root      20   0       0      0      0 S   0.3  0.0   0:03.84 kworker/1:1                                                                   
     1 root      20   0  125204   3716   2560 S   0.0  0.2   0:02.28 systemd                                                                       
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd                                                                      
     3 root      20   0       0      0      0 S   0.0  0.0   0:00.05 ksoftirqd/0                                                                   
     5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H  

3. vmstat命令

[root@node1 ~]# vmstat 2 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
1  0      8 247512  39660 394168    0    0    31     8   86  269  0  1 98  1  0
0  0      8 247480  39660 394172    0    0     0     0   96  147  4  0 96  0  0
0  0      8 247484  39660 394172    0    0     0    66   95  141  2  2 96  0  0

通过分析 vmstat 命令的执行结果,可以获得一些与当前 Linux 运行性能相关的信息。比如说:

  • r 列表示运行和等待 CPU 时间片的进程数,如果这个值长期大于系统 CPU 的个数,就说明 CPU 不足,需要增加 CPU。
  • 输出结果中,CPU 项显示了 CPU 的使用状态,其中当 us 列的值较高时,说明用户进程消耗的 CPU 时间多,如果其长期大于 50%,就需要考虑优化程序或算法;sy 列的值较高时,说明内核消耗的 CPU 资源较多。通常情况下,us+sy 的参考值为 80%,如果其值大于 80%,则表明可能存在 CPU 资源不足的情况。

总的来说,vmstat 命令的输出结果中,我们应该重点注意 procs 项中 r 列的值,以及 CPU 项中 us 列、sy 列和 id 列的值。

4. uptime命令

uptime 命令是监控系统性能最常用的一个命令,主要用来统计系统当前的运行状况。例如:

[root@node1 ~]# uptime 
 21:53:49 up  1:14,  1 user,  load average: 0.01, 0.02, 0.05

该命令的输出结果中,各个数据所代表的含义依次是:系统当前时间、系统运行时长、当前登陆系统的用户数量、系统分别在 1 分钟、5 分钟和 15 分钟内的平均负载。

这里需要注意的是,load average 这 3 个输出值一般不能大于系统 CPU 的个数。例如,本测试系统有 8 个 CPU,如果 load average 中这 3 个值长期大于 8,就说明 CPU 很繁忙,负载很高,系统性能可能会受到影响;如果偶尔大于 8 则不用担心,系统性能一般不会受到影响;如果这 3 个值小于 CPU 的个数(如本例所示),则表示 CPU 是非常空闲的。
 

以上是关于Linux运维17:观察CPU状态的主要内容,如果未能解决你的问题,请参考以下文章

运维遇到问题的解决思路

Linux- 日常运维-sar

Linux学习笔记(二十九)日常运维一

Linux日常运维管理技巧

为啥电脑的内存使用量会慢满增加,要怎么才能解决

Linux进程详解