网站建设设计制作培训,对亚马逊网站做简要分析与评价,电子商务网站建设与运营方向,重庆新闻频道在线直播观看文章目录概述RAID文件系统与裸设备的对比磁盘I/O性能评判标准常用命令“sar –d”命令组合“iostat –d”命令组合“iostat –x”单独统计某个磁盘的I/O“vmstat –d”命令组合小结概述
RAID
可以根据应用的不同#xff0c;选择不同的RAID方式
如果一个应用经常有大量的读操…
文章目录概述RAID文件系统与裸设备的对比磁盘I/O性能评判标准常用命令“sar –d”命令组合“iostat –d”命令组合“iostat –x”单独统计某个磁盘的I/O“vmstat –d”命令组合小结概述
RAID
可以根据应用的不同选择不同的RAID方式
如果一个应用经常有大量的读操作可以选择以RAID5方式构建磁盘阵列存储数据如果应用有大量频繁的写操作可以选择RAID0存取方式如果应用对数据安全要求很高同时对读写也有要求可以考虑RAID01存取方式
Linux-Raid0、Raid1、Raid5、Raid10初探
尽可能用内存的读写代替直接磁盘I/O使频繁访问的文件或数据放入内存中进行操作处理因为内存读写操作比直接磁盘读写的效率要高千倍。将经常进行读写的文件与长期不变的文件独立出来分别放置到不同的磁盘设备上。对于写操作频繁的数据可以考虑使用裸设备代替文件系统。
文件系统与裸设备的对比 使用裸设备的优点: - 数据可以直接读写不需要经过操作系统级的缓存节省了内存资源避免了内存资源争用。 - 避免了文件系统级的维护开销比如文件系统需要维护超级块、inode等。 - 避免了操作系统的缓存预读功能减少了I/O请求。 使用裸设备的缺点: - 数据管理、空间管理不灵活需要很专业的人来操作。 其实裸设备的优点就是文件系统的缺点反之也是如此。合理的规划和衡量根据应用的需求做出对应的策略。 裸设备 raw device 磁盘I/O性能评判标准 正常情况下svctm应该是小于await值的而svctm的大小和磁盘性能有关CPU、内存的负荷也会对svctm值造成影响过多的请求也会间接导致svctm值的增加。
await值的大小一般取决于svctm的值和I/O队列长度以及I/O请求模式。如果svctm的值与await很接近表示几乎没有I/O等待磁盘性能很好。如果await的值远高于svctm的值则表示I/O队列等待太长系统上运行的应用程序将变慢此时可以通过更换更快的硬盘来解决问题。
%util项的值也是衡量磁盘I/O的一个重要指标。如果%util接近100%表示磁盘产生的I/O请求太多I/O系统已经满负荷地在工作该磁盘可能存在瓶颈。长期下去势必影响系统的性能可以通过优化程序或者通过更换更高、更快的磁盘来解决此问题。 常用命令
“sar –d”命令组合
通过“sar –d”命令组合可以对系统的磁盘I/O做一个基本的统计 [rootVM-24-3-centos ~]# sar -d 2 3
Linux 3.10.0-1160.11.1.el7.x86_64 (VM-24-3-centos) 03/06/2023 _x86_64_ (2 CPU)08:56:57 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
08:56:59 AM dev253-0 1.50 0.00 12.00 8.00 0.00 1.00 0.33 0.05
08:56:59 AM dev11-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0008:56:59 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
08:57:01 AM dev253-0 54.00 0.00 640.00 11.85 0.20 3.84 0.18 0.95
08:57:01 AM dev11-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0008:57:01 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
08:57:03 AM dev253-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:57:03 AM dev11-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
Average: dev253-0 18.50 0.00 217.33 11.75 0.07 3.77 0.18 0.33
Average: dev11-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
[rootVM-24-3-centos ~]# DEV表示磁盘设备名称。tps表示每秒到物理磁盘的传送数也就是每秒的I/O流量。一个传送就是一个I/O请求多个逻辑请求可以合并为一个物理I/O请求。rd_sec/s表示每秒从设备读取的扇区数1扇区512字节。wr_sec/s表示每秒写入设备的扇区数目。avgrq-sz表示平均每次设备I/O操作的数据大小以扇区为单位。avgqu-sz表示平均I/O队列长度。await表示平均每次设备I/O操作的等待时间以毫秒为单位。svctm表示平均每次设备I/O操作的服务时间以毫秒为单位。%util表示一秒中有百分之几的时间用于I/O操作。
Linux中I/O请求系统与现实生活中超市购物排队系统有很多类似的地方通过对超市购物排队系统的理解可以很快掌握Linux中I/O运行机制。比如
avgrq-sz类似于超市排队中每人所买东西的多少。avgqu-sz类似于超市排队中单位时间内平均排队的人数。await类似于超市排队中每人的等待时间。svctm类似于超市排队中收银员的收款速度。%util类似于超市收银台前有人排队的时间比例。 “iostat –d”命令组合 [rootVM-24-3-centos ~]# iostat -d 2 3
Linux 3.10.0-1160.11.1.el7.x86_64 (VM-24-3-centos) 03/06/2023 _x86_64_ (2 CPU)Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 3.91 1.06 29.56 21828907 611223560
scd0 0.00 0.00 0.00 316 0Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 0.00 0.00 0.00 0 0
scd0 0.00 0.00 0.00 0 0Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 0.50 0.00 4.00 0 8
scd0 0.00 0.00 0.00 0 0[rootVM-24-3-centos ~]# 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。
这里需要注意的一点是上面输出上的第一项是系统从启动以来到统计时的所有传输信息第二次输出的数据才代表在检测的时间段内系统的传输值。
“iostat –x”单独统计某个磁盘的I/O
“iostat –x”命令组合还提供了对每个磁盘的单独统计如果不指定磁盘默认对所有磁盘进行统计 rrqm/s表示每秒进行合并的读操作数目。wrqm/s表示每秒进行合并的写操作数目。r/s表示每秒完成读I/O设备的次数。w/s表示每秒完成写I/O设备的次数。rsec/s表示每秒读取的扇区数。wsec/s表示每秒写入的扇区数。 “vmstat –d”命令组合
通过“vmstat –d”命令组合也可以查看磁盘的统计数据。 [rootVM-24-3-centos ~]# vmstat -d 3 2
disk- ------------reads------------ ------------writes----------- -----IO------total merged sectors ms total merged sectors ms cur sec
vda 591170 3530 43657830 4460432 80215339 54988709 1222778513 249512681 0 25485
sr0 89 0 632 22 0 0 0 0 0 0
vda 591170 3530 43657830 4460432 80215379 54988754 1222779225 249512735 0 25485
sr0 89 0 632 22 0 0 0 0 0 0
[rootVM-24-3-centos ~]#
显示了磁盘的reads、writes和IO的使用状况。 小结
衡量磁盘I/O好坏是多方面的有应用程序本身的也有硬件设计上的还有系统自身配置的问题等。要解决I/O的瓶颈关键是要提高I/O子系统的执行效率。
首要要从应用程序上对磁盘读写进行优化能够放到内存中执行的操作尽量不要放到磁盘上。其次对磁盘存储方式进行合理规划选择适合自己的RAID存取方式。最后在系统级别上可以选择适合自身应用的文件系统必要时使用裸设备提高读写性能。