您当前的位置: 首页 > 笑话分类 >> 调侃

Discuz70测试版发布体验新版改进2020年

2020-02-19 22:11:15

现象

前段时间在对我们自己开发的文件系统测试过程中发现一个有趣的现象:IO放大。测试现象描述如下:

现象1:iostat x /dev/sdh1,观察发现每秒完成的读请求次数100+,而测试程序统计的实际IOPS为50,约为iostat统计数据的一半; 现象2:cat /sys/block/sdh1/stat发现测试程序运行过程中,该设备被读的数据量为77292KB,而测试程序实际读数据量为40000KB。我们会在下面的两个测试以及原理分析中揭示这些额外IO来自何方。

测试1:不同offset读文件测试

测试目的

测试ext3文件系统元数据(索引块)对文件读性能影响

测试方法

顺序读数据目录(500个1GB大小文件)所有文件,每个文件读一次,每轮测试中读文件offset一致,一共执行五轮,offset分别为32KB,48KB,64KB,1GB-40KB,每轮测试之前清空缓存(echo 3 /proc/sys/vm/drop_caches),使用O_DIRECT方式读,每次读4KB。

测试结果

图1 不同offset读IOPS

表1 不同offset读数据量对比

读offset 测试前已读扇区 测试后已读扇区 测试读扇区数 实际读数据量(KB) 预期读数据量(KB) 32K 4512 2256 2000 48K 8442 4221 2000 64K 8464 4232 2000 1G-40K 12472 6236 2000 结论

上面的测试较为有力地解释了ext3文件系统元数据(主要指索引块)对杜性能影响。在元数据缓存未命中情况下,读文件offset越大,产生额外IO越多,IOPS越低。

测试2:元数据缓存性能测试

测试目的

测试ext3文件系统元数据(主要指索引块)缓存与否对文件读性能影响

测试方法

顺序读数据目录下所有文件(500个,每个大小为1GB),每个文件只读一次,offset为1GB-40KB(根据计算,ext3此时使用二级间接索引)。测试共执行两轮,第一轮测试之前清cache,第二轮测试之前不清理cache,使用O_DIRECT方式读,读大小4KB。

测试结果

表2 有无元数据缓存读写性能对比

%2

测试场景 IOPS 实际读数据量(KB) 测试1(无缓存) 37 6228

治疗孩子积食药品

小孩老流鼻血是什么原因

患上术后ED怎么用药

孩子风热感冒晚上咳嗽的食疗方

下肢血栓的症状

怎么样治疗盆腔炎
气血虚痛经怎么治疗
外阴瘙痒用什么治
子宫内膜炎多久能好
月经不调的原因是什么
推荐阅读
图文聚焦