linux磁盘读写命令,ubuntu命令行查看硬盘使用情况
linux磁盘读写命令,ubuntu命令行查看硬盘使用情况除了CPU和内存,硬盘读写(I/O )能力也是影响Linux系统性能的重要因素之一。 本节介绍了可用于检查硬盘读写性能的几个系统命令,并介绍了如何根据这些命令的输出结果确定硬盘在当前系统上是否过载。检查Linux硬盘的读写性能: sar -d命令第《Linux sar命令》节详细介绍了sar命令的基本用法,但不在此讨论。 接下来,我将介绍如
linux磁盘读写命令,ubuntu命令行查看硬盘使用情况
除了CPU和内存,硬盘读写(I/O )能力也是影响Linux系统性能的重要因素之一。 本节介绍了可用于检查硬盘读写性能的几个系统命令,并介绍了如何根据这些命令的输出结果确定硬盘在当前系统上是否过载。
检查Linux硬盘的读写性能: sar -d
命令
第《Linux sar命令》节详细介绍了sar命令的基本用法,但不在此讨论。 接下来,我将介绍如何使用sar -d
命令分析硬盘的读写性能。
以下是执行sar -d
命令的结果示例。
[root@localhost ~]# sar -d 3 5
Linux2.6. 32-431.el6.x86 _ 64 (localhost ) 10/25/2019 _x86_64_ (1 CPU )
06:36336052 amdevtpsrd _ sec/SWR _ sec/savgrq-szavgqu-szawaitsvctm % util
06336036336055 am dev8-0. 00.00.00.00.00.00.00.00.00.00.00.00.00.00
06:36336055 amdevtpsrd _ sec/SWR _ sec/savgrq-szavgqu-szawaitsvctm % util
06336036336058 am dev8- 01.00.00 (12.0012.00 )0. 00.00 (0. 00.00 ) 0.00
06:36336058 amdevtpsrd _ sec/SWR _ sec/savgrq-szavgqu-szawaitsvctm % util
06:37336001 am dev8- 01.990.0047.7624.00.00.50.250.05
average : devtpsrd _ sec/SWR _ sec/savgrq-szavgqu-szawaitsvctm % util
average : dev8- 01.00.0019.9720.00.00.330.170.02
结合上述输出结果,您可以根据以下标准确定当前硬盘的读写(I/O )性能:
通常,svctm的大小与硬盘的性能有关,其值小于await。 但是,请注意,CPU、内存负载也会影响svctm的值,过多的请求会间接导致svctm的值增加。
await的值通常受svctm、I/O队列长度和I/O请求模式的影响。 如果svctm接近await,则表示很少等待I/O,且当前硬盘性能良好。 如果await的值远远高于svctm,则I/O队列等待时间太长,导致系统上运行的APP应用程序变慢。 在这种情况下,更换更快的硬盘可以解决问题。
%util条目也是衡量硬盘I/O性能的重要指标。 也就是说,如果该值接近100%,则硬盘的I/O请求过多,I/O系统已完全运行,从长期来看可能会影响系统性能。 如果需要,可以通过优化程序或更换更大、更快的硬盘来解决此问题。
检查Linux硬盘的读写性能: iostat -d
命令
也可以通过运行iostat -d
命令来检查系统中硬盘的使用情况。 以下是运行此命令的示例输出。
[root@localhost ~]# iostat -d 2 3
(Linux2.6. 32-431.el6.x86 _ 64 (localhost ) 10/30/2019_x86_64_(8CPU ) ) ) ) ) ) )
device : t psblk _ read/sblk _ wrtn/sblk _ read blk _ wrtn
sda 5.29 337.11 9.51 485202 13690
device : t psblk _ read/sblk _ wrtn/sblk _ read blk _ wrtn
sda 1.00 8.00 16.00 16 32
device : t psblk _ read/sblk _ wrtn/sblk _ read blk _ wrtn
SDA0.00.00.000
此输出结果集中在以下四列: 各自的含义如下。
bk_read/s:1 :表示每秒读取的数据的块数;
bk_wrtn/s:1 :表示每秒写入的数据的块数;
Blk_read :表示要读取的所有块数;
Blk_wrtn :表示写入的所有块数。
另外,该输出结果中,第一个输出的数据是从系统启动到统计时的所有传输信息,表示从第二个输出的数据开始,在指定的检测期间内的系统传输值。
也可以根据iostat
命令的输出结果来判断当前硬盘的I/O性能。 例如,Blk_read/s的值较大表示当前硬盘读取操作频繁。 同样,Blk_wrtn/s的值较大表示当前硬盘写入频繁。 Blk_read和Blk_wrtn的大小没有固定的边界,并且不同的系统应用相应值的范围也不同。 但是如果长期出现大的数量,
据读写情况,通常是不正常的,一定程度上会影响系统性能。
不仅如此,iostat 命令还提供了统计指定硬盘 I/O 状况的方法,即使用 -x 选项。例如:
[root@localhost ~]# iostat -x /dev/sda 2 3
Linux 2.6.32-431.el6.x86_64 (localhost) 10/30/2019 _x86_64_ (8 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.09 0.00 0.24 0.26 0.00 99.42
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 2.00 0.56 2.92 0.44 206.03 7.98 63.56 0.03 9.99 5.31 1.79
avg-cpu: %user %nice %system %iowait %steal %idle
0.31 0.00 0.06 0.00 0.00 99.62
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
avg-cpu: %user %nice %system %iowait %steal %idle
0.50 0.00 0.06 0.00 0.00 99.44
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
此输出结果基本和 sar -d
命令的输出结果相同,需要额外说明的几个选项的含义如下:
rrqm/s:表示每秒被合并的读操作数目(文件系统会对读取同一 block 块的请求进行合并)
wrqm/s:表示每秒被合并的写操作数目;
r/s:表示每秒完成读 I/O 设备的次数;
w/s:表示每秒完成写 I/O 设备的次数;
rsec/s:表示每秒读取的扇区数;
wsec/s:表示每秒写入的扇区数;
Linux查看硬盘读写性能:vmstat -d
命令
使用 vmstat
命令也可以查看有关硬盘的统计数据,例如:
[root@bogon ~]# vmstat -d 3 2
disk- ------------reads------------ ------------writes----------- -----IO------
total merged sectors ms total merged sectors ms cur sec
sda 6897 4720 485618 71458 1256 1475 21842 9838 0 43
disk- ------------reads------------ ------------writes----------- -----IO------
total merged sectors ms total merged sectors ms cur sec
sda 6897 4720 485618 71458 1256 1475 21842 9838 0 43
该命令的输出结果显示了硬盘的读(reads)、写(writes)以及 I/O 的使用状态。
以上主要讲解了如何通过命令查看当前系统中硬盘 I/O 的性能,其实影响硬盘 I/O 的因素是多方面的,例如应用程序本身、硬件设计、系统自身配置等等。
要想解决硬盘 I/O 的瓶颈,关键是要提高 I/O 子系统的执行效率。比如说,首先从应用程序上对硬盘读写性能进行优化,能够放到内存中执行的操作尽量别保存到硬盘里(内存读写效率要远高于硬盘读写效率);其次,还可以对硬盘存储方法进行合理规划,选择合适的 RAID 存储方式;最后,选择适合自身应用的文件系统,必要时可以使用裸设备提高硬盘的读写性能。
在裸设备上,数据可以直接读写,不必经过操作系统级别的缓存,还可以避免文件系统级别的维护开销(文件系统需要维护超级块、I-node 块等)以及操作系统的 cache 预读功能(减少了 I/O 请求)。
更多推荐
所有评论(0)