10.1 使用w查看系统负载 vmstat命令 top命令 sar命令nload

10.1 使用w查看系统负载

具体用法如下:

[root@bogon ~]# w
 09:11:25 up 17 min,  1 user,  load average: 0.00, 0.04, 0.10
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.193.1    08:56    5.00s  0.04s  0.00s w

第1行从左至右显示的信息依次为:时间、系统运行时间、登录用户数、平均负载。从第2行开始的所有行则是告诉我们:当前登录的用户名极其登录地址等。最因该关注第1行中的load average:后面的3个数值。

第一个数值表示1分钟内系统的平均负载值,第2个数值表示5分钟内系统的平均负载值,第3个数值表示15分钟内系统的平均负载值。着重看第1个值,它表示单位时间段内使用CPU的活动进程数(在这里其实就是1分钟内),值越大就说明服务器压力越大。一般情况下,这个值只要不超过服务器的CPU数量就没有关系。如果服务器CPU数量为8,那么值小于8就说明当前服务器没有压力;否则就要关注一下了。查看服务器有几个CPU的方法如下所示:

[root@bogon ~]# cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 78
model name      : Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
stepping        : 3
microcode       : 0x9e
cpu MHz         : 2400.149
cache size      : 3072 KB
physical id     : 0
siblings        : 1
core id         : 0
cpu cores       : 1
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 22
wp              : yes
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 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 dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp
bogomips        : 4800.29
clflush size    : 64
cache_alignment : 64
address sizes   : 42 bits physical, 48 bits virtual
power management:

上例中,/proc/cpuinfo这个文件记录了CPU的详细信息。目前市面上的服务器有很多是2颗多核CPU,在Linux看来,它就是2*n个CPU(这里的n为单颗物理CPU上有几核)。例如n是4,则查看这个文件时会显示8段类似的信息,而最后一段信息的processor:后面会显示7。所以查看当前系统有几个CPU,我们可以使用命令grep -c 'processor' /proc/cpuinfo。然而查看有几颗物理CPU时,则需要查看关键字physical id。

vmstat命令

具体用法如下:

[root@bogon ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 585312   2084 210944    0    0    31     3   61   82  0  0 99  1  0

命令w查看的是系统整体上的负载,通过看那个数值可以知道当前系统有没有压力。但无法判断具体是哪里(CPU,内存,磁盘等)有压力,所以这就用到了vmstat。vmstat命令打印的结果共分为6部分:procs,memory,swap,io,system和cpu。重点关注一下r,b,si,so,bi,bo这几列信息。

  • procs显示进程的相关信息。

  • r(run):表示运行或等待CPU时间片的进程数。大家不要误认为等待CPU时间片意味着这个进程没有运行,实际上某一时刻1个CPU只能有一个进程占用,其它进程只能排着队等着,此时这些排队等待CPU资源的进程依然是运行状态。该数值如果长期大于服务器CPU的个数,则说明CPU资源不够用了。

  • b(block):表示等待资源的进程数,这个资源指的是I/O,内存等。举个例子,当磁盘读写非常频繁时,写数据就会非常慢,此时CPU运算很快就结束了,但进程需要把计算的结果写入磁盘,这样进程的任务才算完成,那此时这个进程只能慢慢地等待磁盘了,这样这个进程就是这个b状态。该数值如果长时间大于1,则需要关注一下了。

  • memory显示内存的相关信息。

  • swpd:表示切换到交换分区中的内存数量,单位为KB。

  • free:表示当前空闲的内存数量,单位为KB。

  • cache:表示(从磁盘中读取的)缓存大小,单位为KB。

  • buff:表示(即将写入磁盘的)缓冲大小,单位为KB。

  • swap显示内存的交换情况

  • si:表示由交换区写入内存的数据量,单位为KB。

  • so:表示由内存写入交换区的数据量,单位为KB。

  • io显示磁盘的使用情况。

  • bi:表示从块设备读取数据的量(读磁盘),单位为KB。

  • bo:表示从块设备写入数据的量(读磁盘),单位为KB。

  • system显示采集间隔内发生的中断次数。

  • in:表示在某一时间间隔内观测到的每秒设备的中断次数。

  • cs:表示每秒产生的上下文切换次数。

  • cpu显示CPU的使用状态

  • us:显示用户下所花费CPU的时间百分比。

  • sy:显示系统花费CPU的时间百分比。

  • id:表示CPU处于空闲状态的时间百分比。

  • wa:表示I/O等待所占用CPU的时间百分比。

  • st:表示被偷走的CPU所占百分比(一般都为0,不用关注)。

  • 以上介绍的各个参数中,经常会关注r,b和wa这3列。io压力很大,这两列的数值会比较高。当这两列的数值的比较高并且不断变化时,说明内存不够了,内存中的数据频繁交换到交换分区中,这对系统性能影响极大。

  • 10.3 top命令 :动态查看系统进程的使用资源情况,每隔3秒更新一次
    top -c :显示详细的进程信息
    top -bn1:静态显示所有进程
    q退出,数字1显示所有核cpu,大写字母M按内存使用顺序排序,
  • 大写字母P按cpu使用情况排序

  • [root@bogon ~]# top -bn1 |head
    top - 15:10:48 up  6:16,  1 user,  load average: 0.00, 0.01, 0.05
    Tasks: 117 total,   1 running, 116 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  6.2 us,  0.0 sy,  0.0 ni, 81.2 id, 12.5 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem :   997956 total,   583800 free,   200372 used,   213784 buff/cache
    KiB Swap:  4194300 total,  4194300 free,        0 used.   604600 avail Mem
    
       PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
         1 root      20   0  125496   4036   2592 S  0.0  0.4   0:01.61 systemd
         2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd
         3 root      20   0       0      0      0 S  0.0  0.0   0:00.26 ksoftirqd/0

猜你喜欢

转载自blog.51cto.com/13107353/2139798