• iostat命令简单使用


    1.iostat使用范围

    iostat命令可以生成3种类型的报告:

    (1)CPU使用情况的报告

    (2)设备使用情况的报告

    (3)网络文件系统(NFS)使用情况的报告

    2.每种报告的格式说明

    关于CPU使用报告的格式解释

    %user:应用程序使用CPU的时间占比。

    %nice:拥有高优先级的应用程序占用CPU的时间百分比。

    默认情况下,所有应用程序的优先级一样,所以CPU不会偏袒哪一个。但如果有的优先级高,CPU就会先

    去执行它们,那么对于这群身份特殊的应用程序,我们用%nice来统计它们的CPU使用占比。

    %system:内核程序使用CPU的时间占比。

    %iowait:CPU花费了多少时间去等待磁盘IO。此时CPU是空闲的,什么事都不做。

    %idle:CPU什么都不做,既没有等待磁盘IO,也没有做其他事情。完全空闲状态。

    %steal:之前管理程序服务于CPU1,突然CPU2跑来了,此时管理程序跟CPU1说:你等会哈,我先去服务CPU2,马上回来。

    此时,CPU1被强制置于等待状态。CPU1等待的时间占比就是%steal。(个人理解)

    关于设备使用报告的格式解释:

    tps:每秒发送给设备的传输数。这里的传输指的是:发给设备的一个I/O请求。

    所以,tps的意思就是:每秒发给设备的I/O请求数。一个读请求叫做一个I/0,一个写请求也叫做一个I/O。

    Blk_read/s:每秒从设备读取的block数。每个block的大小是512字节,等于一个扇区的大小。

    Blk_wrtn/s:每秒写入到设备的block数。每个block的大小是512字节,等于一个扇区的大小。

    Blk_read从该设备读取的总block数。发出去的block数。

    Blk_wrtn:写入到该设备的总block数。拿进来的block数。

    kB_read/s:每秒从设备读取的千字节数。kilobytes。

    kB_wrtn/s:每秒写入到设备的千字节数。kilobytes。

    kB_read:从设备读取的总千字节数。kilobytes。发出去的数据量。

    kB_wrtn:写入到该设备的总千字节数。kilobytes。拿进来的数据量。

    MB_read/s:每秒从该设备读出去的兆字节数。megabytes。

    MB_wrtn/s:每秒写入到该设备的兆字节数。megabytes。

    MB_read:从该设备读出去的总兆字节数

    MB_wrtn:写入到该设备的总兆字节数

    rrqm/s:没有理解,会查找资料来补充。

    wrqm/s:没有理解,会查找资料来补充。

    r/s:每秒发送给设备的读请求数。(重要指标)

    w/s:每秒发送给设备的写请求数。(重要指标)

    rsec/s:每秒从这个设备读取了多少个扇区。

    wsec/s:每秒写入了多少个扇区到该设备。

    rkB/s:每秒从设备读取的千字节数。kilobytes。(与前面的kB_read/s一样)

    wkB/s:每秒写入到设备的千字节数。kilobytes。(与前面的kB_write/s一样)

    rMB/s:与上面类似。

    wMB/s:与上面类似。

    avgrq-sz:所有发送给设备的请求,都有大小。这个参数用于表示所有请求的平均大小,以扇区为单位。

    avgqu-sz:假如第1秒,设备前的请求队列中有5个请求;第2秒,设备前的队列中有4个请求;

    第3秒,设备前的请求队列中有3个请求,那么现在我来计算,设备前的队列,平均每秒是多长:

    5 + 4 + 3 / 3 = 4。也就是平均每秒都有4个请求在排队。

    await设备服务每个请求的平均时间。包括请求的排队时间和实际服务时间。比如我去肯德基,

    我的前面有4个人,排了15分钟后,服务员开始给我服务。我点了汉堡和可乐,过

    了5分钟,服务员将汉堡和可乐交给了我,我拿着东西离开了。所以对于我这个人(请求),

    肯德基的服务时间是20分钟。单位是毫秒

    svctm:这个字段会在将来的sysstat安装包中移除。所以不需要关注。(我们的iostat来自于sysstat这个安装包)

    %util:没有理解,会查找资料来补充。

    关于网络文件系统报告:

    NFS客户端会挂载NFS服务端分享的设备,我们可以在NFS客户端上统计我们使用NFS的情况。

    Filesystem:指的是网络文件系统。可以用ip:目录或hostname:目录表示。

    比如:10.10.10.10:/data/image或者img.example.com:/data/image

    rBlk_nor/s:应用程序通过read()这个系统调用接口,从网络文件系统中读出来的block数,一个block的大小是512字节。

    wBlk_nor/s:应用程序通过write()这个系统调用接口,写入到网络文件系统中的block数。

    rBlk_dir/s:我们从某个打开的文件中读取的block数。这个文件在网络文件系统中,并且是以O_DIRECT标记打开的。

    wBlk_dir/s:我们写入到某个打开的文件中的block数。这个文件在网络文件系统中,并且是以O_DIRECT标记打开的。

    rBlk_svr/s:NFS客户端通过NFS READ请求,从服务器读取的block数

    wBlk_svr/s:NFS客户端通过NFS WRITE请求,写入到服务器的block数

    rkB_nor/s:应用程序通过read()这个系统调用接口,从网络文件系统中读出来千字节数。kilobytes。

    wkB_nor/s:应用程序通过write()这个系统调用接口,写入到网络文件系统中的千字节数。kilobytes。

    rkB_dir/s:我们从某个打开的文件中读取的千字节数。这个文件在网络文件系统中,并且是以O_DIRECT标记打开的。

    wkB_dir/s:我们写入到某个打开的文件中的千字节数。这个文件在网络文件系统中,并且是以O_DIRECT标记打开的。

    rkB_svr/s:NFS客户端通过NFS READ请求,从服务器读取的千字节数。

    wkB_svr/s:NFS客户端通过NFS WRITE请求,写入到服务器的千字节数。

    rMB_nor/s:同上,只是改了下单位。

    wMB_nor/s:同上,只是改了下单位。

    rMB_dir/s:同上,只是改了下单位。

    wMB_dir/s:同上,只是改了下单位。

    rMB_svr/s:同上,只是改了下单位。

    wMB_svr/s:同上,只是改了下单位。

    ops/s:每秒向文件系统发起的操作数。

    rops/s:每秒向文件系统发起的读操作数。

    wops/s:每秒向文件系统发起的写操作数。

    总的来说,套路就是:block数,千字节数,兆字节数。

    3.命令选项

    iostat -c  只显示CPU使用情况

    iostat -d  只显示设备使用情况

    iostat -n  只显示网络文件系统使用情况

    iostat -k  以千字节显示,没有加k时,是以block数显示的

    iostat -m   以兆字节显示,没有加m时,是以block数显示的

    iostat -N  查看LVM2时比较有用

    iostat -j { ID | LABEL | PATH | UUID} [ device | ALL ]  没理解,待查资料。

    iostat -p [ { device | ALL } ]  显示块设备的统计信息以及它的分区的统计信息,比如sda块设备和它的分区sda1。

    iostat -t  显示每次打印的时间

    iostat -V   打印sysstat的版本

    iostat -x  展示扩展统计数据,需要参考/proc/diskstat文件和/proc/partions文件

    iostat -y  忽略第一次报告(第一次统计数据是从系统启动后算起的),从第二次开始显示

    iostat -z  忽略那些在取样期间,没有任何活动的设备统计数据。也就是说,如果设备没有任何写入和读取,那么无须统计它的数据

    4.注意事项

    /proc文件系统必须要挂载上,iostat才可以工作。

    svctm:平均服务时间,这个字段以后将没有意义。因为I/O统计数据是在block层计算的,我们并不知道磁盘驱动器什么时候开始处理一个请求

    5.附加文件

    /proc/stat包含系统统计数据。

    /proc/uptime包含系统运行时间。

    /proc/diskstats包含磁盘统计数据。

    /sys包含块设备的统计数据。

    /proc/self/mountstats包含网络文件系统的统计数据。

    /dev/disk包含持久设备名

    6.其余参考命令

    sar

    pidstat

    mpstat

    vmstat

  • 相关阅读:
    Spark Executor内存管理
    Spring中Bean的生命周期及其扩展点
    NIO非阻塞IO
    TCP,UDP和socket,Http之间联系和区别
    md5加密,md5加盐加密和解密
    线程监测方法多久没被调用
    项目部署后,替换.class文件不生效
    mysql存储过程导入表
    java生成二维码
    Map中keySet和entrySet的区别
  • 原文地址:https://www.cnblogs.com/t-road/p/6776219.html
Copyright © 2020-2023  润新知