• Linux 常用shell命令四


    top

    [root@localhost ~]# top
    top - 12:13:22 up 167 days, 20:47,  2 users,  load average: 0.00, 0.01, 0.05
    Tasks: 272 total,   1 running, 271 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  0.0 us,  0.1 sy,  0.0 ni, 99.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem : 65759080 total, 58842616 free,   547908 used,  6368556 buff/cache
    KiB Swap:  2097148 total,  2097148 free,        0 used. 64264884 avail Mem
    ................

    对于第一行的解释:
    12:13:22:表示当前系统时间
    167 days, 20:47:表示系统已经运行了167天20小时47分钟(在这期间没有重启过)
    2 users — 当前有2个用户登录系统
    load average: 0.00, 0.01, 0.05:表示load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况

    这里需要注意:
    load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。
    如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了!!!!!

    对上面第三行cpu的状态的解释:
    us(user cpu time):用户态使用的cpu时间比。该值较高时,说明用户进程消耗的 CPU 时间比较多,比如,如果该值长期超过 50%,则需要对程序算法或代码等进行优化。
    sy(system cpu time):系统态使用的cpu时间比。
    ni(user nice cpu time):用做nice加权的进程分配的用户态cpu时间比
    id(idle cpu time):空闲的cpu时间比。如果该值持续为0,同时sy是us的两倍,则通常说明系统则面临着 CPU 资源的短缺。
    wa(io wait cpu time):cpu等待磁盘写入完成时间。该值较高时,说明IO等待比较严重,这可能磁盘大量作随机访问造成的,也可能是磁盘性能出现了瓶颈。
    hi(hardware irq):硬中断消耗时间
    si(software irq):软中断消耗时间
    st(steal time):虚拟机偷取时间
    以上解释的这些参数的值加起来是100%。

    vmstat

    [root@localhost ~]# vmstat
    procs -----------memory---------------------swap-------io---------system--------cpu-----
    r  b      swpd   free    buff   cache    si   so    bi    bo     in   cs     us sy id wa st
    3  0      0      1639792 724280 4854236  0    0     4     34     4    0      19 45 35  0  0

    procs 部分的解释
    r 列表示运行和等待cpu时间片的进程数,如果长期大于1,说明cpu不足,需要增加cpu。
    b 列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。
    -----------------------------
    memory 部分的解释
    swpd 切换到内存交换区的内存数量(k表示)。如果swpd的值不为0,或者比较大,比如超过了100m,只要si、so的值长期为0,系统性能还是正常
    free 当前的空闲页面列表中内存数量(k表示)
    buff 作为buffer cache的内存数量,一般对块设备的读写才需要缓冲。
    cache 作为page cache的内存数量,一般作为文件系统的cache,如果cache较大,说明用到cache的文件较多,如果此时IO中bi比较小,说明文件系统效率比较好。
    -----------------------------
    swap 部分的解释
    si 由内存进入内存交换区数量。
    so 由内存交换区进入内存数量。
    -----------------------------
    io 部分的解释
    bi 从块设备读入数据的总量(读磁盘)(每秒kb)。
    bo 块设备写入数据的总量(写磁盘)(每秒kb)
    -----------------------------
    system 部分的解释
    in 列表示在某一时间间隔中观测到的每秒设备中断数。
    cs 列表示每秒产生的上下文切换次数,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查。
    -----------------------------
    cpu 部分的解释
    us 列显示了用户方式下所花费 CPU 时间的百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序。
    sy 列显示了内核进程所花费的cpu时间的百分比。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。
    wa 列显示了IO等待所占用的CPU时间的百分比。这里wa的参考值为30%,如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的,也可能磁盘或者
    磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。
    id 列显示了cpu处在空闲状态的时间百分比

    iostat

    [root@localhost ~]# iostat l l
    Linux 2.6.32-696.16.1.el6.x86_64 (nc-ftp01.kevin.cn)    2017年12月29日     _x86_64_    (4 CPU)
       
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
              19.32    0.00   45.44    0.06    0.26   34.93
       
    Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
    xvda             14.17        29.94       265.17   63120486  558975100

    avg-cpu: 总体cpu使用情况统计信息,对于多核cpu,这里为所有cpu的平均值
    %user: 在用户级别运行所使用的CPU的百分比.
    %nice: nice操作所使用的CPU的百分比.
    %sys: 在系统级别(kernel)运行所使用CPU的百分比.
    %iowait: CPU等待硬件I/O时,所占用CPU百分比.
    %idle: CPU空闲时间的百分比.

    Device段:各磁盘设备的IO统计信息
    tps: 每秒钟发送到的I/O请求数.
    Blk_read /s: 每秒读取的block数.
    Blk_wrtn/s: 每秒写入的block数.
    Blk_read: 读入的block总数.
    Blk_wrtn: 写入的block总数.

    [root@localhost ~]# iostat -x -k -d 1
    Linux 2.6.32-696.el6.x86_64 (centos6-vm02)  01/04/2018  _x86_64_    (4 CPU)
      
    Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
    scd0              0.00     0.00    0.00    0.00     0.00     0.00     8.00     0.00    0.36    0.36    0.00   0.36   0.00
    vda               0.01     0.13    0.04    0.13     0.60     0.89    18.12     0.00    2.78    0.19    3.53   2.55   0.04
    dm-0              0.00     0.00    0.04    0.22     0.58     0.88    11.25     0.00    3.27    0.25    3.82   1.61   0.04
    dm-1              0.00     0.00    0.00    0.00     0.00     0.00     8.00     0.00    0.13    0.13    0.00   0.04   0.00
    dm-2              0.00     0.00    0.00    0.00     0.00     0.00     7.91     0.00    0.19    0.10    5.00   0.16   0.00

    rrqm/s: 每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并
    wrqm/s: 每秒对该设备的写请求被合并次数
    r/s: 每秒完成的读次数
    w/s: 每秒完成的写次数
    rkB/s: 每秒读数据量(kB为单位)
    wkB/s: 每秒写数据量(kB为单位)
    avgrq-sz:平均每次IO操作的数据量(扇区数为单位)
    avgqu-sz: 平均等待处理的IO请求队列长度
    await: 平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)
    svctm: 平均每次IO请求的处理时间(毫秒为单位)
    %util: 采用周期内用于IO操作的时间比率,即IO队列非空的时间比率

    如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
    idle小于70% IO压力就较大了,一般读取速度有较多的wait。
    同时可以结合vmstat 查看查看b参数(等待资源的进程数)和wa参数(IO等待所占用的CPU时间的百分比,高过30%时IO压力高)

  • 相关阅读:
    C++ std::forward_list
    MyBatis基础入门《十三》批量新增数据
    MyBatis基础入门《十二》删除数据
    MyBatis基础入门《十 一》修改数据
    MyBatis基础入门《十》添加数据
    MyBatis基础入门《九》ResultMap自动匹配
    MyBatis基础入门《八》查询参数传入Map
    MyBatis基础入门《七》查询参数传入对象
    MyBatis基础入门《六》Like模糊查询
    MyBatis基础入门《五》核心配置文件
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/16246364.html
Copyright © 2020-2023  润新知