Linux命令---iostat命令详解

article/2025/6/14 13:46:54

简介

iostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。

 

语法

iostat [ -c ] [ -d ] [ -h ] [ -N ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ] [ device [...] | ALL ] [ -p [ device [,...] | ALL ] ] [ interval [ count ] ]

 

入门使用

iostat -d -k 2

参数 -d 表示,显示设备(磁盘)使用状态;-k某些使用block为单位的列强制使用Kilobytes为单位;2表示,数据显示每隔2秒刷新一次。

输出如下

复制代码
iostat -d -k 1 10
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda              39.29        21.14         1.44  441339807   29990031
sda1              0.00         0.00         0.00       1623        523
sda2              1.32         1.43         4.54   29834273   94827104
sda3              6.30         0.85        24.95   17816289  520725244
sda5              0.85         0.46         3.40    9543503   70970116
sda6              0.00         0.00         0.00        550        236
sda7              0.00         0.00         0.00        406          0
sda8              0.00         0.00         0.00        406          0
sda9              0.00         0.00         0.00        406          0
sda10            60.68        18.35        71.43  383002263 1490928140Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda             327.55      5159.18       102.04       5056        100
sda1              0.00         0.00         0.00          0          0
复制代码

输出信息的意义

tps:该设备每秒的传输次数(Indicate the number of transfers per second that were issued to the device.)。"一次传输"意思是"一次I/O请求"。多个逻辑请求可能会被合并为"一次I/O请求""一次传输"请求的大小是未知的。kB_read/s:每秒从设备(drive expressed)读取的数据量;
kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;
kB_read:读取的总数据量;
kB_wrtn:写入的总数量数据量;这些单位都为Kilobytes。

上面的例子中,我们可以看到磁盘sda以及它的各个分区的统计数据,当时统计的磁盘总TPS是39.29,下面是各个分区的TPS。(因为是瞬间值,所以总TPS并不严格等于各个分区TPS的总和)

 

指定监控的设备名称为sda,该命令的输出结果和上面命令完全相同。

 iostat -d sda 2

默认监控所有的硬盘设备,现在指定只监控sda。 

 

-x 参数

iostat还有一个比较常用的选项-x,该选项将用于显示和io相关的扩展数据。

iostat -d -x -k 1 10
Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda          1.56  28.31  7.80 31.49   42.51    2.92    21.26     1.46     1.16     0.03    0.79   2.62  10.28
Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda          2.00  20.00 381.00  7.00 12320.00  216.00  6160.00   108.00    32.31     1.75    4.50   2.17  84.20

 

输出信息的含义

复制代码
rrqm/s:每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge);wrqm/s:每秒这个设备相关的写入请求有多少被Merge了。rsec/s:每秒读取的扇区数;
wsec/:每秒写入的扇区数。
rKB/s:The number of read requests that were issued to the device per second;
wKB/s:The number of write requests that were issued to the device per second;
avgrq-sz 平均请求扇区的大小
avgqu-sz 是平均请求队列的长度。毫无疑问,队列长度越短越好。    
await:  每一个IO请求的处理的平均时间(单位是微秒毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。
svctm    表示平均每次设备I/O操作的服务时间(以毫秒为单位)。如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,         系统上运行的应用程序将变慢。
%util: 在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度
。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。
复制代码

 

-c 参数

iostat还可以用来获取cpu部分状态值:

iostat -c 1 10
avg-cpu: %user %nice %sys %iowait %idle
1.98 0.00 0.35 11.45 86.22
avg-cpu: %user %nice %sys %iowait %idle
1.62 0.00 0.25 34.46 63.67

 

常见用法

iostat -d -k 1 10         #查看TPS和吞吐量信息(磁盘读写速度单位为KB)
iostat -d -m 2            #查看TPS和吞吐量信息(磁盘读写速度单位为MB)
iostat -d -x -k 1 10      #查看设备使用率(%util)、响应时间(await) iostat -c 1 10 #查看cpu状态

 

 

实例分析

复制代码
ostat -d -k 1 |grep sda10
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda10            60.72        18.95        71.53  395637647 1493241908
sda10           299.02      4266.67       129.41       4352        132
sda10           483.84      4589.90      4117.17       4544       4076
sda10           218.00      3360.00       100.00       3360        100
sda10           546.00      8784.00       124.00       8784        124
sda10           827.00     13232.00       136.00      13232        136
复制代码

上面看到,磁盘每秒传输次数平均约400;每秒磁盘读取约5MB,写入约1MB。

 

iostat -d -x -k 1
Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda          1.56  28.31  7.84 31.50   43.65    3.16    21.82     1.58     1.19     0.03    0.80   2.61  10.29
sda          1.98  24.75 419.80  6.93 13465.35  253.47  6732.67   126.73    32.15     2.00    4.70   2.00  85.25
sda          3.06  41.84 444.90 54.08 14204.08 2048.98  7102.04  1024.49    32.57     2.10    4.21   1.85  92.24

可以看到磁盘的平均响应时间<5ms,磁盘使用率>80。磁盘响应正常,但是已经很繁忙了。

 

转自 http://www.orczhou.com/index.php/2010/03/iostat-detail/


http://chatgpt.dhexx.cn/article/0PsI9Xi3.shtml

相关文章

iostat命令安装及详解

iostat linux系统出现了性能问题&#xff0c;一般我们可以通过top、iostat、free、vmstat等命令 来查看初步定位问题。其中iostat可以给我们提供丰富的IO状态数据。 iostat 由 Red Hat Enterprise Linux AS 发布。同时 iostat 也是 Sysstat 的一部分。所以我们安装要安装syss…

iostat命令详解指标分析

Iostat iostat命令用于监视系统CPU和I/O设备负载 常用方法&#xff1a; iostat -x 1 12 检测系统的io状态&#xff0c;每一秒刷新一次&#xff0c;一共刷新12次 -x该选项显示和io相关的扩展数据 还可以使用-k或者-m选项以按照kb或MB显示单位 不足之处&#xff1a;iostat…

I/O查看--iostat命令详解

文章目录 一.iostat概述二.iostat命令参数三.示例 一.iostat概述 iostat 主要用于输出磁盘IO 和 CPU的统计信息。 iostat属于sysstat软件包。可以用yum install sysstat 直接安装。 cpu属性值说明 参数描述avg-cpucpu平局值%userCPU处在用户模式下的时间百分比%niceCPU处在带…

iostat 命令详解(一)

iostat 命令详解&#xff08;一&#xff09; 原文地址https://www.jianshu.com/p/5fed8be1b6e8 概述 iostat 主要用于输出磁盘IO 和 CPU的统计信息。 iostat属于sysstat软件包。可以用yum install sysstat 直接安装。 iostat 用法 用法&#xff1a;iostat [选项] [<时…

Linux iostat命令详解

Linux iostat命令详解 iostat主要用于监控系统设备的IO负载情况&#xff0c;根据这个可以看出当前系统的写入量和读取量&#xff0c;CPU负载和磁盘负载。 1&#xff0e;命令格式&#xff1a; iostat 参数 时间 次数 2&#xff0e;命令参数&#xff1a; -C 显示CPU使用情况 -d 显…

优化命令iostat详解

一、iostat命令 iostat用于监视系统I/O设备负载。iostat通过观察设备处于活动状态的时间&#xff08;相对于其平均传输速率&#xff09;来整理实时报告输出 。主要用于监视nfs网络文件系统和本地文件系统。 1、iostat命令格式 iostat [ -c | -d ] [ -k | -m ] [ -t ] [ -V ]…

linux iostat 命令详解

iostat主要用于监控系统设备的IO负载情况&#xff0c;iostat提供了丰富的参数给我们查询各种维度的io数据, iostat首次运行时显示自系统启动开始的各项统计信息&#xff0c;之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的…

iostat 命令详解

目录 引言&#xff1a; 一、概述 二、iostat用法 1.用法&#xff1a;iostat [选项] [<时间间隔>] [<次数>] 2. 命令参数&#xff1a; 3.示例&#xff1a; 1.显示所有设备的负载情况 2.iostat -m 以M为单位显示所有信息 3.iostat -d sda 显示指定硬盘…

输入一个年份,输出是否为闰年。#闰年条件:能被4整除但不能被100整除,或者能被400整除的年份是闰年。

seval(input("请输入年份&#xff1a;")) if s%4 0 and s%100 ! 0: print("该年份是闰年") elif s%400 0: print("该年份是闰年") else: print("该年份不是闰年")

编写程序,输出从2000年至3000年所有闰年的年号,每输出10个年号换一行。判断公元年是否为闰年的条件是:

#include<stdio.h> int main() { int year; int j; j0;for(year2000;year<3000;year){ if(year%40&&(year%100!0)||year%4000){ printf("%d ",year); j; if(j%100){ putchar(\n); } } }return 0; }

python:输入某一年份 year,编写程序判断 year 是否为闰年。闰年的判断条件是:year 能被 4 整除但不能被 100 整除,或 year 能被 400 整除。

year eval(input("请输入一个年份&#xff1a;")) if (year % 4 0 and year % 100 !0) or year % 400 0:print("{}是闰年".format(year)) else:print("{}年不是闰年&#xff01;".format(year))执行结果为&#xff1a;

编程计算某年某月有几天。其中判别闰年的条件是: 能被4整除但不能被100整除的年是闰年,能被400整除的年也是闰年。

import java.util.Scanner; public class test3 {public static void main(String[] args) {Scanner scan new Scanner(System.in);System.out.print("请输入年月:");int year scan.nextInt();if (year % 4 0 && year % 100 ! 0) {System.out.print("…

输入年份,判断是否是闰年; 闰年判断条件:能够被4整除但不能被100整除,或则能被100整除,又能被400整除

html代码如下&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><script>var year prompt("请输入年份", "");if (year % 4 0 &&…

如何判断闰年

什么是闰年 闰年是历法中的名词&#xff0c;分为普通闰年和世纪闰年。 闰年&#xff08;Leap Year&#xff09;是为了弥补因人为历法规定造成的年度天数与地球实际公转周期的时间差而设立的。补上时间差的年份为闰年。-来自百度百科 闰年分类 普通闰年&#xff1a;公历年份是4…

判断闰年

首先要知道&#xff0c;什么是闰年。 判定公历闰年遵循的一般规律为: 四年一闰,百年不闰,四百年再闰. 公历闰年的精确计算方法&#xff1a; ①、普通年能被4整除的为闰年。&#xff08;如1920年就是闰年,1910年不是闰年&#xff09; ②、世纪年能被400整除的是闰年。(如2000…

redis集群常用命令

总结 1. 查看redis是否是集群模式&#xff0c;info cluster 命令 2. 查看集群的所有节点信息&#xff0c;cluster nodes 命令 3. 查看集群中各个节点的slot区间&#xff0c;cluster slots 命令 4. 查看指定key所在slot的值&#xff0c;cluster keyslot key 命令 实验如下图…

redis常用查询操作

1.登陆命令&#xff1a;/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6388 -a 123456 2.切换数据库&#xff1a;127.0.0.1:6379[2]> select 1 2.获取所有key&#xff1a;127.0.0.1:6388> keys * 3.获取指定key&#xff1a;127.0.0.1:6388> keys frd_5 4.获取指…

redis 五种数据类型查询命令

目录 一、String数据类型 1、SET/GET/APPEND/STRLEN 命令 2、 INCR/DECR/INCRBY/DECRBY命令 3、 GETSET命令 4、SETEX命令 5、 SETNX命令 6、 MSET/MGET/MSETNX命令 二、List 数据类型 1、LPUSH/LPUSHX/LRANGE 命令 2、LPOP/LLEN 命令 3、LREM/LSET/LINDEX/LTRIM 命…

MVVC(多版本并发控制)

1、MVCC ​   MVCC&#xff0c;全称Multi-Version Concurrency Control&#xff0c;即多版本并发控制。MVCC是一种并发控制的方法&#xff0c;一般在数据库管理系统中&#xff0c;实现对数据库的并发访问&#xff0c;在编程语言中实现事务内存。MVCC在MySQL InnoDB中的实现主…

mysql mvvc 简单理解

先说下我自己的理解&#xff0c;总结为图如下&#xff1a; MVCC的全称是“多版本并发控制”。这项技术使得InnoDB的事务隔离级别下执行一致性读操作有了保证&#xff0c;换言之&#xff0c;就是为了查询一些正在被另一个事务更新的行&#xff0c;并且可以看到它们被更新之前的值…