96SEO 2026-02-20 09:02 3
。

IOPS是指单位时间内系统能处理的I/O请求数量#xff0c;一…磁盘性能指标–IOPS、吞吐量转
Second)即每秒的输入输出量(或读写次数)是衡量磁盘性能的主要指标之一。
IOPS是指单位时间内系统能处理的I/O请求数量一般以每秒处理的I/O请求数量为单位I/O请求通常为读或写数据操作请求。
随机读写频繁的应用如小文件存储(图片)、OLTP数据库、邮件服务器关注随机读写性能IOPS是关键衡量指标。
顺序读写频繁的应用传输大量连续数据如电视台的视频编辑视频点播VOD(Video
rpm不等。
影响磁盘的关键因素是磁盘服务时间即磁盘完成一个I/O请求所花费的时间它由寻道时间、旋转延迟和数据传输时间三部分构成。
Tseek是指将读写磁头移动至正确的磁道上所需要的时间。
寻道时间越短I/O操作越快目前磁盘的平均寻道时间一般在315ms。
Trotation是指盘片旋转将请求数据所在扇区移至读写磁头下方所需要的时间。
旋转延迟取决于磁盘转速通常使用磁盘旋转一周所需时间的1/2表示。
比如7200
Ttransfer是指完成传输所请求的数据所需要的时间它取决于数据传输率其值等于数据大小除以数据传输率。
目前IDE/ATA能达到133MB/sSATA
II可达到300MB/s的接口数据传输率数据传输时间通常远小于前两部分消耗时间。
简单计算时可忽略。
测量中IOPS数值会受到很多因素的影响包括I/O负载特征(读写比例顺序和随机工作线程数队列深度数据记录大小)、系统配置、操作系统、磁盘驱动等等。
因此对比测量磁盘IOPS时必须在同样的测试基准下进行即便如此也会产生一定的随机不确定性。
是一种命令排序技术一把喂给设备更多的IO请求让电梯算法和设备有机会来安排合并以及内部并行处理提高总体效率。
NCQ最高可以支持命令深度级数为32级NCQ可以最多对32个命令指令进行排序。
大多数的软件都是属于同步I/O软件也就是说程序的一次I/O要等到上次I/O操作的完成后才进行这样在硬盘中同时可能仅只有一个命令也是无法发挥这个技术的优势这时队列深度为1。
随着Intel的超线程技术的普及和应用环境的多任务化以及异步I/O软件的大量涌现。
这项技术可以被应用到了实际队列深度的增加代表着性能的提高。
在测试时队列深度为1是主要指标大多数时候都参考1就可以。
实际运行时队列深度也一般不会超过4.
UOS公有云开放以来一些用户反应用dd命令测试出来的1TB云硬盘的吞吐率(MBPS)只有128MB/s而不是我们SLA保证的170MB
这是为什么下面我会简单介绍如何测试硬盘RAIDSANSSD云硬盘等然后再来回答上面的问题。
测试对象要区分硬盘、SSD、RAID、SAN、云硬盘等因为它们有不同的特点
测试是为了对比所以需要定性和定量。
在宣布自己的测试结果时需要说明这次测试的工具、参数、方法以便于比较。
顺序读SAS总体表现是SATA硬盘的1.3倍SSD总体表现是sata硬盘的4倍。
随机读SAS总体表现是SATA硬盘的4倍SSD总体表现是sata硬盘的一千多倍。
同样的4KB数据包顺序写的情况下SSD卡的成绩为592MB/SIOPS为152K。
而本地硬盘仅为118MB/SIOPS仅为30290。
在接下来的4KB数据包随机写操作中SSD卡再次展示了其高超的IO性能高达549MB/S的随机写速率IOPS高达140K。
相比之下本地硬盘的随机读写仅为548KB/SIOPS为134。
为了更好的测试我们需要先了解存储系统块存储系统本质是一个排队模型我们可以拿银行作为比喻。
还记得你去银行办事时的流程吗
93所以我们估算SATA硬盘64KB随机写的IOPS是93。
一般的硬盘厂商都会标明顺序读写的MBPS。
我们在列出IOPS时需要说明IO大小寻址空间读写模式顺序/随机队列深度。
我们一般常用的IO大小是4KB这是因为文件系统常用的块大小是4KB。
虽然硬盘的性能是可以估算出来的但是怎么才能让应用获得这些性能呢对于测试工具来说就是如何得到IOPS和MBPS峰值。
我们先用dd测试一下SATA硬盘的MBPS(吞吐量)。
这是因为磁盘利用率是78%没有到达95%以上还有部分时间是空闲的。
当dd在前一个IO响应之后在准备发起下一个IO时SATA硬盘是空闲的。
那么如何才能提高利用率让磁盘不空闲呢只有一个办法那就是增加硬盘的队列深度。
相对于CPU来说硬盘属于慢速设备所有操作系统会有给每个硬盘分配一个专门的队列用于缓冲IO请求。
在某个时刻,有N个inflight的IO请求,包括在队列中的IO请求、磁盘正在处理的IO请求。
N就是队列深度。
增大应用IO大小到达底层之后会变成多个IO请求相当于队列中有多个IO请求
队列深度增加了IO在队列的等待时间也会增加导致IO响应时间变大这需要权衡。
让我们通过增加IO大小来增加dd的队列深度看有没有效果
可以看到2MB的IO到达底层之后会变成多个512KB的IO平均队列长度为2.39这个硬盘的利用率是97%MBPS达到了197MB/s。
(为什么会变成512KB的IO你可以去使用Google去查一下内核参数
现在我们来测试下SATA硬盘的4KB随机写的IOPS。
因为我的环境是Linux所以我使用FIO来测试。
直写绕过操作系统Cache。
因为我们测试的是硬盘而不是操作系统的Cache所以设置为1。
读写模式有顺序写write、顺序读read、随机写randwrite、随机读randread等。
size)这个区间的硬盘空间上。
这是一个可以影响IOPS的参数。
一般设置为硬盘的大小。
队列深度只有使用libaio时才有意义。
这是一个可以影响IOPS的参数。
绿色方框里面是每个IO请求的平均响应时间大约是4.3ms。
*黄色框表示95%的IO请求的响应时间是小于等于
我们发现这次测试的IOPS没有提高反而IO平均响应时间变大了是17ms。
为什么这里提高队列深度没有作用呢原因当队列深度为1时硬盘的利用率已经达到了98%说明硬盘已经没有多少空闲时间可以压榨了。
而且响应时间为
对于SATA硬盘当增加队列深度时并不会增加IOPS只会增加响应时间。
这是因为硬盘只有一个磁头并行度是1
所以当IO请求队列变长时每个IO请求的等待时间都会变长导致响应时间也变长。
这是以前用IOMeter测试一块SATA硬盘的4K随机写性能可以看到IOPS不会随着队列深度的增加而增加反而是平均响应时间在倍增。
队列深度IOPS平均响应时间1332.9315253.0022172333.9850745.9865284332.59465312.0250608336.56801223.76635916329.78560648.51347732332.05459096.35393464331.041063193.200815128331.309109385.163111256327.442963774.401781
我们继续测试SATA硬盘前面我们提到寻址空间参数也会对IOPS产生影响下面我们就测试当size1GB时的情况。
我们发现当设置size1GB时IOPS会显著提高到568IO平均响应时间会降到7ms(队列深度为4)。
这是因为当寻址空间为1GB时磁头需要移动的距离变小了每次IO请求的服务时间就降低了这就是空间局部性原理。
假如我们测试的RAID卡或者是磁盘阵列(SAN)它们可能会用Cache把这1GB的数据全部缓存极大降低了IO请求的服务时间(内存的写操作比硬盘的写操作快很1000倍)。
所以设置寻址空间为1GB的意义不大因为我们是要测试硬盘的全盘性能而不是Cache的性能。
RAID0/RAID5/RAID6的多块磁盘可以同时服务其实就是提高并行度这样极大提高了性能(相当于银行有多个柜台)。
以前测试过12块RAID0100GB的寻址空间4KB随机写逐步提高队列深度IOPS会提高因为它有12块磁盘(12个磁头同时工作)并行度是12。
队列深度IOPS平均响应时间11215.9958420.82091724657.0613170.42842045369.3269700.74406085377.3873031.486629165487.9116602.914048325470.9726635.846616645520.23401511.5852511285542.73981623.0858432565513.99461146.401606
对于低端磁盘阵列使用单机IOmeter就可以测试出它的IOPS和MBPS的峰值但是对于高端磁盘阵列就需要多机并行测试才能得到IOPS和MBPS的峰值(IOmeter支持多机并行测试)。
现在的存储厂商会找SPC帮忙测试自己的磁盘阵列产品(或全闪存阵列)
并给SPC支付费用这就是赤裸裸的标准垄断。
国内也有做存储系统测试的假如你要测试磁盘阵列可以找NSTC
SSD的延时很低并行度很高(多个nand块同时工作)缺点是寿命和GC造成的响应时间不稳定。
推荐用IOMeter进行测试使用大队列深度并进行长时间测试这样可以测试出SSD的真实性能。
下图是storagereview对一些SSD硬盘做的4KB随机写的长时间测试可以看出有些SSD硬盘的最大响应时间很不稳定会飙高到几百ms这是不可接受的。
直写绕过操作系统Cache。
因为我们测试的是硬盘而不是操作系统的Cache所以设置为1。
读写模式有顺序写write、顺序读read、随机写randwrite、随机读randread等。
size)这个区间的硬盘空间上。
这是一个可以影响IOPS的参数。
一般设置为硬盘的大小。
队列深度只有使用libaio时才有意义。
这是一个可以影响IOPS的参数。
蓝色方框表示IOPS是5900在正常的误差范围内。
绿色方框表示IO请求的平均响应时间为5.42ms
最后我们来测试512KB顺序写看看云硬盘的最大MBPS(吞吐率)是多少测试参数和测试结果如下所示
蓝色方框表示MBPS为174226KB/s约为170MB/s。
其实使用dd命令也可以测试出170MB/s的吞吐率不过需要设置一下内核参数详细介绍在
在Windows下我们一般使用IOMeter测试磁盘的性能IOMeter不仅功能强大而且很专业是测试磁盘性能的首选工具。
IOMeter是图形化界面(浓浓的MFC框架的味道)非常方便操作下面我将使用IOMeter测试我们UOS上1TB的云硬盘。
当你把云硬盘挂载到Windows主机之后你还需要在windows操作系统里面设置硬盘为联机状态。
打开IOMeter(你需要先下载)你会看到IOMeter的主界面。
在右边你回发现4个worker(数量和CPU个数相同)因为我们现在只需要1个worker所以你需要把其他3个worker移除掉。
然后设置测试时间我们设置测试时长为60秒测试之前的预热时间为10秒(IOMeter会发起负载但是不统计这段时间的结果)。
在最后测试之前你可以设置查看实时结果设置实时结果的更新频率是5秒钟。
最后点击绿色旗子开始测试。
在测试过程中我们可以看到实时的测试结果当前的IOPS是6042平均IO请求响应时间是10.56ms这个测试还需要跑38秒这个测试轮回只有这个测试。
我们可以看到IOMeter自动化程度很高极大解放测试人员的劳动力而且可以导出CSV格式的测试结果。
IO大小读写模式队列深度MBPS顺序写吞吐测试512KB顺序写64顺序读吞吐测试256KB顺序读64
我们当前主要是优化IO处理逻辑并没有去优化2和3这是因为我们是把用户数据的安全性放在第一位。
这是因为目前云硬盘在处理超大IO请求时的延迟比SSD高(我们会不断进行优化)现在我们有两种方法来获得更高的MBPS
通过设置max_sectors_kb这个参数使用dd也可以测出170MB/s的吞吐量
/sys/block/vdb/queue/max_sectors_kb
/sys/block/vdb/queue/max_sectors_kb
下面是使用fio工具的测试结果也可以得到170MB/s的吞吐率。
IOPS和MBPS是用户可以使用工具测试的指标云硬盘还有一些用户不可测量的指标
这些指标我们只能通过根据系统架构和约束条件计算得到然后转告给用户。
这些指标衡量着公有云厂商的良心有机会会专门进行介绍。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback