##iostat是查看磁盘活动统计情况##显示所有设备负载情况 r/s: 每秒完成的读 I/O 设备次数。即 rio/s;w/s: 每秒完成的写 I/O 设备次数。即 wio/s等
iostat ##每隔2秒刷新磁盘IO信息,并且每次显示3次
iostat 2 3#显示某个磁盘的IO信息
iostat -d sda1##显示tty和cpu信息
iostat -t##以M为单位显示磁盘IO信息
iostat -m##查看TPS和吞吐量信息 kB_read/s:每秒从设备(drive expressed)读取的数据量;kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;kB_read:读取的总数据量;kB_wrtn:写入的总数量数据量;
iostat -d -k 1 1#查看设备使用率(%util)、响应时间(await)
iostat -d -x -k 1 1#查看CPU状态
iostat -c 1 3#统计进程(pid)的stat,进程的stat自然包括进程的IO状况
pidstat#只显示IO
pidstat -d 1 #-d IO 信息,-r 缺页及内存信息-u CPU使用率-t 以线程为统计单位1 1秒统计一次
pidstat -u -r -d -t 1#文件级IO分析,查看当前文件由哪些进程打开
lsof
ls /proc/pid/fd#利用 sar 报告磁盘 I/O 信息DEV 正在监视的块设备 tps 每秒钟物理设备的 I/O 传输总量 rd_sec/s 每秒从设备读取的扇区数量 wr_sec/s 每秒向设备写入的扇区数量 avgrq-sz I/O 请求的平均扇区数
#avgqu-sz I/O 请求的平均队列长度 await I/O 请求的平均等待时间,单位为毫秒 svctm I/O 请求的平均服务时间,单位为毫秒 %util I/O 请求所占用的时间的百分比,即设备利用率
sar -pd 10 3 #iotop top的io版
iotop#查看页面缓存信息 其中的Cached 指用于pagecache的内存大小(diskcache-SwapCache)。随着写入缓存页,Dirty 的值会增加 一旦开始把缓存页写入硬盘,Writeback的值会增加直到写入结束。
cat /proc/meminfo #查看有多少个pdflush进程 Linux 用pdflush进程把数据从缓存页写入硬盘
#pdflush的行为受/proc/sys/vm中的参数的控制/proc/sys/vm/dirty_writeback_centisecs (default 500): 1/100秒, 多长时间唤醒pdflush将缓存页数据写入硬盘。默认5秒唤醒2个(更多个)线程。如果wrteback的时间长于dirty_writeback_centisecs的时间,可能会出问题
cat /proc/sys/vm/nr_pdflush_threads#查看I/O 调度器
#调度算法
#noop anticipatory deadline [cfq]
#deadline : deadline 算法保证对既定的IO请求以最小的延迟时间。
#anticipatory:有个IO发生后,如果又有进程请求IO,则产生一个默认6ms猜测时间,猜测下一个进程请求IO是干什么。这对于随机读取会造成较大的延时。对数据库应用很糟糕,而对于Web Server等则会表现不错。
#cfq: 对每个进程维护一个IO队列,各个进程发来的IO请求会被cfq以轮循方式处理,对每一个IO请求都是公平。适合离散读的应用。
#noop: 对所有IO请求都用FIFO队列形式处理。默认IO不会存在性能问题。
cat /sys/block/[disk]/queue/scheduler#改变IO调度器
$ echo deadline > /sys/block/sdX/queue/scheduler
#提高调度器请求队列的
$ echo 4096 > /sys/block/sdX/queue/nr_requests
#########
这张图片显示的是 iostat
命令的输出结果,iostat
是一个用于监视系统输入/输出设备负载的命令。这个输出提供了关于 CPU 和磁盘使用情况的详细信息。下面是对输出内容的分析:
CPU 使用情况(avg-cpu):
- %user: 16.16% 的 CPU 时间用于用户进程。
- %nice: 0.00% 的 CPU 时间用于调整过优先级的用户进程。
- %system: 4.73% 的 CPU 时间用于系统进程。
- %iowait: 3.04% 的 CPU 时间用于等待 I/O 操作完成。
- %steal: 0.00% 的 CPU 时间被虚拟机管理程序“偷走”。
- %idle: 76.07% 的 CPU 时间处于空闲状态。
磁盘设备使用情况(Device):
- tps: 每秒传输次数,即磁盘的读写请求数。
- KB_read/s: 每秒从磁盘读取的千字节数。
- KB_wrtn/s: 每秒写入磁盘的千字节数。
- KB_dscd/s: 每秒丢弃的千字节数,通常为0。
- KB_read: 自系统启动以来从磁盘读取的总千字节数。
- KB_wrtn: 自系统启动以来写入磁盘的总千字节数。
- KB_dscd: 自系统启动以来丢弃的总千字节数。
磁盘设备分析:
- dm-0: 没有活动,可能是一个未使用的设备或快照。
- dm-1: 有显著的读写活动,每秒65.78次传输,读取66.98KB,写入593.36KB。这表明
dm-1
是一个活跃的磁盘设备。 - loop0 到 loop6: 这些是循环设备,通常用于挂载镜像文件。在这里,它们几乎没有活动。
- sda: 这是主要的磁盘设备,有大量的读写活动,每秒50.64次传输,读取67.39KB,写入593.81KB。这表明
sda
是系统的主要存储设备,并且非常活跃。 - sdb 和 sdc: 这两个设备几乎没有活动,可能是备用或不常用的存储设备。
结论:
- CPU 大部分时间处于空闲状态(76.07%),表明 CPU 资源没有被充分利用。
- 磁盘
dm-1
和sda
有显著的读写活动,可能是系统性能的瓶颈,特别是sda
。 - 如果系统感觉慢,可能需要进一步检查
dm-1
和sda
的使用情况,以及是否有可能优化磁盘 I/O 操作。