Linux - 磁盘I/O性能评估
文章目录
- 概述
- 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存取方式。
- 最后,在系统级别上,可以选择适合自身应用的文件系统,必要时使用裸设备提高读写性能。
Linux - 磁盘I/O性能评估相关推荐
- Unix/Linux 磁盘 I/O 性能监控命令
2019独角兽企业重金招聘Python工程师标准>>> 怎样才能快速的定位到并发高是由于磁盘io开销大呢?可以通过三种方式: Top可以看到的cpu信息有: Tasks: 29 to ...
- Linux服务器性能评估与优化--转
http://www.itlearner.com/article/4553 一.影响Linux服务器性能的因素 1. 操作系统级 Ø CPU Ø 内存 Ø 磁盘I/ ...
- linux 内存性能评估,内存性能评估工具vmstat/free/smem使用与解读
本课程从基础入手,再进行深入研究,同时结合实际的应用案例进行有点到线及面.由浅入深的讲述.始终秉承了实战.实用.通俗.易懂的特点,在内容上十分注重实战化,从运维的多个方面以真实的生产环境介绍运维工作中 ...
- Linux服务器性能评估
一.影响Linux服务器性能的因素 1. 操作系统级 CPU内存磁盘I/O带宽网络I/O带宽 2. 程序应用级 二.系统性能评估标准 影响性能因素 影响性能因素 评判标准 好 坏 糟糕 CPU use ...
- 【转】Linux服务器性能评估与优化(一)
转自:https://blog.csdn.net/hguisu/article/details/39373311 1.前言简介 1.1.影响Linux服务器性能的因素 1. 操作系统级 性能调优是找出 ...
- Linux服务器性能评估与优化(一)
1.前言简介 一.影响Linux服务器性能的因素 1. 操作系统级 性能调优是找出系统瓶颈并消除这些瓶颈的过程. 很多系统管理员认为性能调优仅仅是调整一下内核的参数即可解决问题, 事实上情况并不是这样 ...
- Linux - 生产故障、性能评估面试题
目录 1.生产环境服务器变慢,诊断思路和性能评估谈谈:linux怎么查看系统负载情况 一.查看cpu 二.查看内存 三.查看硬盘 四.磁盘IO 五.网络I/O 记一次真实排查经历 2.假如生产环境出现 ...
- idea占用cpu过高_生产环境服务器变慢、CPU占用过高,诊断思路和性能评估谈谈?...
上篇: https://zhuanlan.zhihu.com/p/166162037zhuanlan.zhihu.com 一.生产环境服务器变慢,诊断思路和性能评估 1.在Linxu准备数据 (1) ...
- Java面试题-JVM 和服务器性能评估
1.JVM垃圾回收的时候如何确定垃圾?是否知道什么是GC Roots 垃圾指的是内存中不再使用的空间(主要指的就是堆内存),确定垃圾的方法有引用记数法和可达性分析法(但引用计数法存在对象之间循环引用的 ...
最新文章
- Python 3.10来了!!!
- 李彦宏乌镇谈人工智能:百度会很快和雄安宣布一个大的智能城市计划
- 跨域请求的一种解决方案
- 新浪微博WeiboManageAction的java实现
- input禁止鼠标滚轮改变数值
- MobileNet论文笔记
- linux 脚本在哪里编写,Linux 脚本编写基础(一)
- printf 规定数据输出方式
- mysql safe 模式_MYSQL的安全模式:sql_safe_updates介绍
- 当Python遇上HDF5--性能优化实战
- python 苹果id申请_以写代学: python 模拟用户注册或登录账号
- Java并发包的理解
- 程序员必备的10个B站优质UP主!
- YUV 与 颜色空间转换
- IOS小知识点5之内存警告、循环引用、交叉引用
- INF443 Amphi 2: Calculs d‘Illumination
- 关于sap的Logon的几个参数
- 盘古开源解析:数据防泄漏对于数据安全的重要性
- 密集创投迎来爆发期 今年会是链游之年么?
- ssm+Vue计算机毕业设计寻迹边境丹东旅游网站(程序+LW文档)