美文网首页
linux查看系统负载情况

linux查看系统负载情况

作者: 缘木与鱼 | 来源:发表于2019-12-27 18:04 被阅读0次

    系统平均负载

    是指处于运行或不可打扰状态的进程的平均数。处于运行,表示运行态,占用CPU,或就绪态,等待CPU调度;不可打扰,表示阻塞,正在等待I/O。

    linux系统中查看负载情况一般使用uptime命令(w命令和top命令)

    一、uptime命令

    # uptime
    14:07:35 up 112 days, 20:54,  1 user,  load average: 0.00, 0.01, 0.05
    

    内容解析:

    • 14:07:35 : 当前时间
    • up 112 days, 20:54 :系统运行时长
    • 1 user :当前有1个用户登录了系统
    • load average: 0.00, 0.01, 0.05 :系统在过去的1分钟内,5分钟内,15分钟内的平均负载

    平均负载解析
    查看逻辑CPU核心数: grep 'model name' /proc/cpuinfo | wc -l

    # grep 'model name' /proc/cpuinfo | wc -l
    1
    

    运行结果表示,有1个逻辑CPU核心。 以1个CPU核心为例,假设CPU每分钟最多处理100个进程 --

    • load = 0,没有进程需要CPU
    • load = 0.5,CPU处理了50个进程
    • load = 1,CPU处理了100个进程,这是CPU已被占满,但系统还是能顺畅运行
    • load = 1.5,CPU处理了100个进程,还有50个进程正在排队等着CPU处理,这是CPU已经超负荷工作了。
      为了让系统顺畅运行,load值最好不要超过1.0,这样就没有进程需要等待了,所有进程都能在第一时间得到处理。

    一般情况下,0.7是一个比较理想的值。

    另外,load值的健康状态还跟系统CPU核心数相关,如果CPU核心数为2,那么load健康值应该为2,依次类推。

    评价系统的负载一般采用15分钟内的那个平均负载值。

    二、w命令

    [root@localhost ~]# w
     14:35:48 up 112 days, 21:22,  1 user,  load average: 0.00, 0.01, 0.05
    USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
    root     pts/0    10.4.2.107       14:06    4.00s  0.02s  0.01s w
    

    第1行:与uptime命令相同
    第2行以下:当前登录的用户列表

    三、top命令

    [root@localhost ~]# top
    top - 14:40:59 up 112 days, 21:27,  1 user,  load average: 0.00, 0.01, 0.05
    Tasks:  98 total,   1 running,  97 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  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 :  3880604 total,   753448 free,   301416 used,  2825740 buff/cache
    KiB Swap:  2097148 total,  2097148 free,        0 used.  3249396 avail Mem 
    
      PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                  
     5074 root      20   0  161884   2184   1544 R  0.3  0.1   0:00.02 top                                                                      
        1 root      20   0  128004   5548   3116 S  0.0  0.1  29:47.57 systemd                                                                  
        2 root      20   0       0      0      0 S  0.0  0.0   0:00.98 kthreadd                                                                 
        3 root      20   0       0      0      0 S  0.0  0.0   1:02.55 ksoftirqd/0                                                              
        5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H                                                             
        7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0
    

    第1行:与uptime命令相同
    第2行:进程数信息

    • Tasks: 98 total 总共有98个进程
    • 1 running 1个进程正在占用CPU
    • 97 sleeping 97个睡眠进程
    • 0 stopped 0个停止的进程
    • 0 zombie 0个僵尸进程
      第3行:CPU使用率
    • us(user) 非nice用户占用的CPU
    • sy(system) 内核、内核进程占用CPU的比率
    • ni(nice) 用户进程空间内改变过优先级的进程占用的CPU比率
    • id(idle) CPU空闲比率,如果系统缓慢而这个值很高,说明系统慢的原因不是CPU负载高
    • wa(iowait) CPU等待执行I/O操作的时间比率,该指标可以用来排查磁盘I/O的问题,通常结合wa和id判断
    • hi(Hardware IRQ) CPU处理硬件中断所占时间的比率
    • si(Software Interrupts) CPU处理软件中断所占时间的比率
    • st(steal) 流逝的时间,虚拟机中的其他任务所占CPU时间的比率

    一些情形说明:

    • 用户进程us占比高,I/O操作wa低: 说明系统缓慢的原因在于进程占用大量CPU,通常还会伴有较低的空闲占比id,说明CPU空转时间很少。
    • I/O操作wa低,空闲比率id高: 可以排除CPU资源瓶颈的可能。
    • I/O操作wa高:说明I/O占用了大量的CPU时间,需要检查交换空间的使用,交换空间位于磁盘上,性能远低于内存,当内存耗尽开始使用交换空间时,将会给性能带来严重的影响,所以对于性能要求较高的服务器,一般建议关闭交换空间。另一方面,如果内存充足,但wa很高,说明需要检查哪个进程占用了大量的I/O资源。

    四、iostat命令

    iostat 命令可以查看系统区分的I/O使用情况。

    [root@localhost ~]# iostat
    -bash: iostat: command not found
    [root@localhost ~]# yum install -y sysstat
    ...安装过程
    [root@localhost ~]# iostat
    Linux 3.10.0-957.27.2.el7.x86_64 (localhost.localdomain)    12/27/2019  _x86_64_    (1 CPU)
    
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
               0.01    0.00    0.09    0.00    0.00   99.90
    
    Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
    sda               0.04         7.27         2.76   70737928   26794216
    dm-0              0.02         0.06         0.25     610596    2392246
    dm-1              0.00         0.00         0.00       2604          0
    dm-2              0.02         7.21         2.51   70107584   24386816
    

    avg-cpu:
    %user 在用户级别运行所使用的CPU比率
    %nice nice操作所使用的CPU比率
    %system 在系统级别(kernel)运行所使用的CPU比率
    %iowait CPU等待硬件I/O时,所占用的CPU比率
    %steal 其他任务所占CPU时间的比率
    %idle CPU空闲时间的比率

    值得注意的IO指标:
    Device 磁盘名称
    tps 每秒I/O传输请求量
    kB_read/s 每秒读取的block数
    kB_wrtn/s 每秒写入的block数
    kB_read 读取block的总数
    kB_wrtn 写入block的总数

    五、iotop命令

    iotop命令类似top命令,但是现实的是各个进程的I/O情况,对于定位I/O操作较重的进程有较大的作用。

    [root@localhost ~]# yum install -y iotop
    [root@localhost ~]# iotop
    Total DISK READ :   0.00 B/s | Total DISK WRITE :       0.00 B/s
    Actual DISK READ:   0.00 B/s | Actual DISK WRITE:       0.00 B/s
      TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                                                                       
        1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % systemd --switched-root --system --deserialize 22
        2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
     1027 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % sshd -D
        5 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/0:0H]
    

    可以看到不同任务的读写强度。

    六、sysstat工具

    查看历史监控数据可以使用sysstat工具的sar命令:可以记录系统CPU的负载,I/O状况和内存使用记录。

    sysstat的配置文件在: /etc/sysconfig/sysstat
    sysstat的日志文件在: /var/log/sa/ 统计信息每10分钟记录一次,每天的23:59分会分割统计文件。该操作在/etc/cron.d/sysstat 文件中配置。

    sar -u 查看当天CPU使用情况
    sar -r 查看当天内存使用情况
    sar -b 查看当天IO统计记录

    [root@localhost ~]# yum install -y sysstat
    [root@localhost ~]# sar
    Linux 3.10.0-957.27.2.el7.x86_64 (localhost.localdomain)    12/27/2019  _x86_64_    (1 CPU)
    
    03:40:01 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
    03:50:01 PM     all      0.00      0.00      0.04      0.00      0.00     99.96
    ...
    Average:        all      0.02      0.00      0.05      0.00      0.00     99.93
    
    
    [root@localhost ~]# sar -r
    Linux 3.10.0-957.27.2.el7.x86_64 (localhost.localdomain)    12/27/2019  _x86_64_    (1 CPU)
    
    03:40:01 PM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
    03:50:01 PM    743604   3137000     80.84       100   2677828    878216     14.69    507828   2406620         0
    04:00:01 PM    743548   3137056     80.84       100   2677836    878216     14.69    507836   2406620         0
    ...
    Average:       742369   3138235     80.87       100   2678556    878239     14.69    508025   2407157         0
    
    kbmemfree             这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间
    kbmemused             这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间
    %memused              这个值是kbmemused和内存总量(不包括swap)的一个百分比
    kbbuffers             这个值是free命令中的buffer
    kbcached              这个值是free命令中的cache
    kbcommit              保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap)
    %commit               这个值是kbcommit与内存总量(包括swap)的一个百分比
    
    
    
    [root@localhost ~]# sar -b
    Linux 3.10.0-957.27.2.el7.x86_64 (localhost.localdomain)    12/27/2019  _x86_64_    (1 CPU)
    
    03:40:01 PM       tps      rtps      wtps   bread/s   bwrtn/s
    03:50:01 PM      0.08      0.01      0.07      1.30      0.71
    04:00:01 PM      0.06      0.00      0.06      0.00      0.49
    ...
    Average:         0.12      0.00      0.12      0.85      1.79
    
    tps            每秒钟物理设备的 I/O 传输总量
    rtps           每秒钟从物理设备读入的数据总量
    wtps           每秒钟向物理设备写入的数据总量
    bread/s        每秒钟从物理设备读入的数据量,单位为:块/s
    bwrtn/s        每秒钟向物理设备写入的数据量,单位为:块/s
    

    相关文章

      网友评论

          本文标题:linux查看系统负载情况

          本文链接:https://www.haomeiwen.com/subject/degdoctx.html