杭州网站推广¥做下拉去118cr,php网站开发教案,上海网站排名优化,织梦旅游网站模板iostat 命令是 I/O statistics(输入/输出统计)的缩写#xff0c;用来报告系统的 CPU 统计信息和块设备及其分区的 IO 统计信息。iostat 是 sysstat 工具集的一个工具#xff0c;在 Ubuntu 系统中默认是不带 iostat 命令的#xff0c;需要自行安装#xff1a; $ sudo apt in…iostat 命令是 I/O statistics(输入/输出统计)的缩写用来报告系统的 CPU 统计信息和块设备及其分区的 IO 统计信息。iostat 是 sysstat 工具集的一个工具在 Ubuntu 系统中默认是不带 iostat 命令的需要自行安装 $ sudo apt install sysstat 注意本文中 demo 的演示环境为 ubuntu 18.04。
主要作用
iostat 主要用于监控系统设备的 IO 负载情况iostat 首次运行时显示自系统启动开始的各项统计信息之后运行 iostat 将显示自上次运行该命令以后的统计信息。 iostat 的特点是汇报磁盘活动统计情况同时也会汇报出 CPU 使用情况。CPU 统计数据是作为所有处理器之间的平均值在系统范围内计算的。iostat 也有一个弱点就是它不能对某个进程进行深入分析仅对系统的整体情况进行分析。
基本语法
语法格式iostat options device name
常用选项-c 只显示 CPU 的信息-d 只显示设备信息--human 以友好的方式显示结果-j { ID | LABEL | PATH | UUID | ... } 显示设备的持久化名称-k 以 k 为单位显示-m 以 m 为单位显示-N 显示任何设备映射器设备的注册设备映射器名称用于查看LVM2统计数据-p [ { device [,...] | ALL } ] 显示块设备及其分区的信息-t 显示每次输出的时间-V 显示 iostat 的版本信息-x 显示更多的设备列-z 如果没有变化就不重复输出信息interval 连续输出每 interval 秒输出一次count 与 interval 连用指定一共输出多少次
CPU 信息
iostat 输出中的 CPU 部分是对 CPU 使用情况的统计信息(以百分比的形式显示) user 进程在用户地址空间中消耗 CPU 时间的百分比。像 shell 程序、各种语言的编译器、数据库应用、web 服务器和各种桌面应用都算是运行在用户地址空间的进程。这些程序如果不是处于 idle 状态那么绝大多数的 CPU 时间都是运行在用户态。
nice 可以通过 nice 值调整进程用户态的优先级。这里显示的是调整过 nice 值的进程消耗掉的 CPU 时间。如果系统中没有进程被调整过 nice 值那么 ni 就显示为 0。
system 进程在内核地址空间中消耗 CPU 时间的百分比。所有进程要使用的系统资源都是由 Linux 内核处理的。当处于用户态(用户地址空间)的进程需要使用系统的资源时比如需要分配一些内存、或是执行 IO 操作、再或者是去创建一个子进程此时就会进入内核态(内核地址空间)运行。事实上决定进程在下一时刻是否会被运行的进程调度程序就运行在内核态。对于操作系统的设计来说消耗在内核态的时间应该是越少越好。在实践中有一类典型的情况会使 sy 变大那就是大量的 IO 操作因此在调查 IO 相关的问题时需要着重关注它。
iowait CPU 等待磁盘 IO 操作的时间。和 CPU 的处理速度相比磁盘 IO 操作是非常慢的。有很多这样的操作比如CPU 在启动一个磁盘读写操作后需要等待磁盘读写操作的结果。在磁盘读写操作完成前CPU 只能处于空闲状态。Linux 系统在计算系统平均负载时会把 CPU 等待 IO 操作的时间也计算进去所以在我们看到系统平均负载过高时可以通过 iowait 来判断系统的性能瓶颈是不是过多的 IO 操作造成的。
steal 只有 Linux 在作为虚拟机运行时 steal 才是有意义的。它表示虚机等待 CPU 资源的时间(虚机分到的是虚拟 CPU当需要真实的 CPU 时可能真实的 CPU 正在运行其它虚机的任务所以需要等待)。
idle CPU 处于 idle 状态的百分比。一般情况下 user nice idle 应该接近 100%。
设备信息
设备报告提供每个物理设备或分区的统计信息。可以在命令行中指定要显示统计信息的块设备和分区。如果没有输入设备或分区那么将显示系统使用的每个设备的统计信息并提供内核为其维护统计信息。如果命令行上给出了 ALL 关键字那么将显示系统定义的每个设备的统计信息包括那些从未使用过的设备。默认情况下传输速率显示在 1K 块中除非设置环境变量POSIXLY_CORRECT在这种情况下使用 512 字节块。根据所使用的标志报告可显示以下字段: Device Device 列显示 /dev 目录中列出的设备(或分区)名称。
tps 每秒发送到设备的 I/O 请求数。多个逻辑请求可以组合成对设备的单个 I/O 请求。
Blk_read/s 每秒读取的磁盘块的数量。
Blk_wrtn/s 每秒写入的磁盘块的数量。
Blk_read 读取的块的总数。
Blk_wrtn 写入的总块数。
r/s 设备每秒完成的读请求数(合并后)。
w/s 设备每秒完成的写请求数(合并后)。
sec/s 每秒从设备读取或写入的扇区数。
rsec/s 每秒从设备读取的扇区数。
wsec/s 每秒写入设备的扇区数。
rqm/s 每秒钟排队到设备的合并后的 I/O 请求数量。
rrqm/s 每秒钟排队到设备的合并后的读请求数。
wrqm/s 每秒钟排队到设备的合并后的写请求数。
%rrqm 在发送到设备之前合并到一起的读请求的百分比。
%wrqm 在发送到设备之前合并到一起的写请求的百分比。
areq-sz 向设备发出的 I/O 请求的平均大小(单位为 k)。
rareq-sz 向设备发出的读请求的平均大小(单位为 k)。
wareq-sz 向设备发出的写请求的平均大小(单位为 k)。
await 平均每次 I/O 操作的时间(以毫秒为单位)。这包括请求在队列中花费的时间和执行它们所花费的时间。
r_await 平均每次读请求的时间(以毫秒为单位)。这包括请求在队列中花费的时间和执行它们所花费的时间。
w_await 平均每次写请求的时间(以毫秒为单位)。这包括请求在队列中花费的时间和执行它们所花费的时间。
aqu-sz 发送到设备的请求的平均队列长度。
%util 向设备发出 I/O 请求的运行时间百分比(设备的带宽利用率)换句话说就是一秒中有百分之多少的时间用于 I/O 操作。当连续处理请求的设备的这个值接近100%时说明产生的 I/O 请求太多I/O 系统已经满负荷该磁盘可能存在瓶颈。但是对于并行处理请求的设备例如 RAID 阵列和现代 SSD这个数字并不反映它们的性能限制。
常见用法
默认显示 CPU 信息和所有的设备信息
$ iostat 只显示 CPU 的信息
$ iostat -c 只显示设备信息
$ iostat -d 还可以指定只显示某一个或多个设备的信息 显示块设备及其分区的信息
$ iostat -d -p sdb
还可以通过逗号分隔同时指定多个磁盘设备 以 M 为单位显示数字
$ iostat -m -d sdb 显示时间戳
$ iostat -t -d sdb 显示更多的设备信息
$ iostat -x -d sda 连续输出 iostat 支持连续地输出信息我们只要指定一个以秒为单位的间隔时间就行了
$ iostat 2 -d sda 此时每隔两秒会输出一次信息。还可以再指定一个数字告诉 iostat 一共输出多少次信息比如每隔两秒输出一次一共输出三次的写法为
$ iostat 2 3 -d sda
显示 LVM2 设备的映射名称
$ iostat -d -N 显示设备的持久化名称
$ iostat -d -j ID 除了 ID还可以指定 LABEL、PATH 和 UUID 等显示方式。