Linux - 磁盘I/O性能评估
创始人
2024-05-29 17:52:13
0

文章目录

  • 概述
    • 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做一个基本的统计


[root@VM-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
[root@VM-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”命令组合


[root@VM-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[root@VM-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”命令组合也可以查看磁盘的统计数据。


[root@VM-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
[root@VM-24-3-centos ~]#

显示了磁盘的reads、writes和IO的使用状况。


小结

衡量磁盘I/O好坏是多方面的,有应用程序本身的,也有硬件设计上的,还有系统自身配置的问题等。要解决I/O的瓶颈,关键是要提高I/O子系统的执行效率。

  • 首要,要从应用程序上对磁盘读写进行优化,能够放到内存中执行的操作,尽量不要放到磁盘上。
  • 其次,对磁盘存储方式进行合理规划,选择适合自己的RAID存取方式。
  • 最后,在系统级别上,可以选择适合自身应用的文件系统,必要时使用裸设备提高读写性能。

在这里插入图片描述

相关内容

热门资讯

多多安卓系统app下载,一站式... 你有没有发现,最近手机上多了一个超级酷炫的系统——多多安卓系统!是不是已经跃跃欲试,想要下载体验一番...
r801 安卓系统,深度解析新... 你有没有听说过R801安卓系统?这可是最近在数码圈里炒得火热的一个话题呢!想象你的手机突然变得像一台...
安卓系统国外能用吗,探讨安卓系... 你有没有想过,当你拿着那部心仪的安卓手机,准备出国旅行或者工作的时候,会不会突然发现,哎呀妈呀,这安...
健康怀仁安卓系统下载,健康相伴 你有没有想过,在这个信息爆炸的时代,拥有一款健康、稳定的操作系统是多么重要的事情呢?今天,就让我带你...
手机系统模拟安卓5.0,系统革... 你有没有想过,如果手机系统可以像安卓5.0那样模拟出来,会是怎样的体验呢?想象你手中的设备瞬间变身成...
关闭安卓电池检测系统,解锁续航... 你有没有发现,手机用久了,电池续航能力好像越来越不给力了?是不是觉得安卓系统的电池检测系统太烦人了?...
安卓系统变ios永久,探索系统... 你知道吗?最近在科技圈里可是掀起了一股热潮呢!那就是安卓系统用户纷纷转向iOS系统的现象。这究竟是怎...
安卓系统虚拟按键失灵,原因排查... 手机里的安卓系统突然间出了点小状况,虚拟按键失灵了!这可真是让人头疼不已。想象你正沉浸在游戏的世界里...
安卓北京交警系统繁忙,揭秘安卓... 最近北京的小伙伴们有没有发现,打开手机上的安卓交警系统,那可真是忙得不亦乐乎啊!不信?那就跟着我一起...
苹果和安卓互用系统,共创未来 你有没有想过,为什么你的苹果手机上的应用,有时候也能在安卓手机上顺畅运行呢?这背后,其实有一个神奇的...
安卓系统强制内置相机,隐私与安... 你知道吗?最近在安卓系统上,有一个让人有点摸不着头脑的小变化引起了大家的关注。那就是安卓系统竟然开始...
安卓系统读书app推荐,安卓系... 你有没有发现,随着智能手机的普及,阅读变得越来越方便了呢?尤其是在安卓系统上,各种各样的读书app层...
安卓系统新出的机型,探索【型号... 最近手机圈可是热闹非凡呢!安卓系统新出的机型层出不穷,简直让人眼花缭乱。今天,就让我带你一起探索这些...
安卓与苹果系统游戏,游戏生态对... 你有没有发现,现在手机游戏越来越流行了?不管是走在路上,还是在公交车上,总能看到大家低头玩着手机,那...
闭源系统和安卓开源系统,揭秘闭... 你有没有想过,为什么你的手机里装了那么多应用,却总感觉少了点什么?没错,就是那股自由自在的“玩”劲儿...
小米安卓系统密码破解,揭秘安全... 小米安卓系统密码破解:一场技术与道德的较量在数字化时代,手机已经成为我们生活中不可或缺的一部分。小米...
ios系统游戏转安卓系统游戏,... 你有没有想过,为什么有些游戏在iOS系统上玩得那么顺畅,一到安卓系统上就卡得跟什么似的?今天,就让我...
安卓90系统怎么下载,体验流畅... 你有没有发现,安卓90系统最近可是火得一塌糊涂呢!不少小伙伴都在问,安卓90系统怎么下载?别急,今天...
安卓系统主题免费字体,个性化你... 你有没有发现,手机里的字体有时候真的能改变心情呢?想象当你打开手机,看到那一个个活泼可爱的字体,是不...
安卓手机的rom系统,功能丰富... 你有没有发现,安卓手机的ROM系统就像是一层神秘的面纱,包裹着你的手机,让它焕发出不一样的光彩?今天...