【标题描述】能够简要描述问题:说明什么场景下,做了什么操作,出现什么问题(尽量使用正向表达方式)
fio随机写测试nvme磁盘性能只有centos的50%
【环境信息】
硬件信息:
1)x86 物理机 (AMD Ryzen 5 3600 6-Core Processor)
25:00.0 Non-Volatile memory controller: Kingston Technology Company, Inc. Device 2263 (rev 03)
软件信息:
1) OS版本及分支
openEuler release 20.03 (LTS-SP1)
2) 内核信息
4.19.90-2012.4.0.0053.x86_64
3) 发现问题的组件版本信息
如果有特殊组网,请提供网络拓扑图
【问题复现步骤】
具体操作步骤
fio -filename=/dev/nvme0n1p6 -direct=1 -iodepth 128 -thread -rw=write -ioengine=libaio -bs=4m -size=30G -numjobs=1 -runtime=60 -group_reporting -name=rand_100write_4k
出现概率(是否必现,概率性错误) 必现
【预期结果】
描述预期结果,可以通过对比新老版本获取
centos测试结果(CentOS Linux release 7.7.1908 (Core) 3.10.0-1062.el7.x86_64)
吞吐 1487MB/s IOPS=355
【实际结果】
IO吞吐只有596MB/s IOPS=142
【附件信息】
比如系统message日志/组件日志、dump信息、图片等
Hey lisiheng, Welcome to openEuler Community.
All of the projects in openEuler Community are maintained by @openeuler-ci-bot.
That means the developers can comment below every pull request or issue to trigger Bot Commands.
Please follow instructions at https://gitee.com/openeuler/community/blob/master/en/sig-infrastructure/command.md to find the details.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
使用 blktrace 抓起日志, blktrace分析IO
上次发的数据我已经分析过了,现象有点奇怪,初步怀疑是和io完成的cpu分布有关
Centos环境下发io cpu统计:
861 0
695 1
223 10
58 11
1270 2
370 3
902 4
926 5
574 6
904 7
445 8
498 9
Centos环境完成io cpu统计:
27526 0
22183 1
7136 10
1830 11
40667 2
11864 3
28126 4
28885 5
18463 6
28913 7
14267 8
15946 9
Openeuler环境下发io cpu统计:
2301 0
3679 1
28 10
801 2
383 6
216 7
223 8
111 9
Openeuelr环境完成io cpu统计:
72709 0
117712 1
919 10
24668 2
12217 6
6924 7
7116 8
3557 9
CentOS 这边下发和完成分布比较平均,而 openEuler 这边则会集中在个别 cpu 上(cpu0 cpu1占了绝大多数)
进一步确认
taskset -c 3 fio -filename=/dev/nvme0n1p4 -direct=1 -iodepth 1 -thread -rw=write -ioengine=libaio -bs=256k -size=30G -numjobs=1 -runtime=60 -group_reporting -name=rand_100write_4k
256K 会被拆分成 2个 128 的.
taskset -c 3 fio -filename=/dev/nvme0n1p4 -direct=1 -iodepth 1 -thread -rw=write -ioengine=libaio -bs=4k -size=30G -numjobs=1 -runtime=60 -group_reporting -name=rand_100write_4k
简化测试用例,单进程同步io绑核测试可以复现问题
fio配置:
[global]
filename=/dev/nvme0n1p6
name=nvme_test
direct=1
ioengine=psync
size=90G
time_based
group_reporting
[test]
numjobs=1
iodepth=1
bs=128k
rw=write
runtime=60
cpus_allowed=3
cpus_allowed_policy=split
测试现象为带宽在 400Mib/s - 1500 Mib/s 之间波动
利用bpftrace脚本抓取io延时,确认主要延时消耗在D2C阶段(io下发到驱动到io完成的时间)
bpftrace脚本
抓取结果
利用bpftrace脚本抓取系统处理的中断类型以及数量
bpftrace脚本
未进行fio测试时,系统只有少量的网卡中断:
当IO压力较大时,系统中除了io中断外,网卡中断的数量也显著提高了
暂时不确定网卡中断和io压力的关系,需要进一步分析
通过关闭网卡复测确认没有其他中断影响,问题仍然存在
通过在OpenEuler环境和CentOS环境升级成相同的5.4内核,现象仍然存在(OpenEuler环境性能波动大,CentOS环境无波动),排除内核问题
怀疑与cpu有关,
利用cpupower工具确认openEuler性能波动期间,cpu频率没有变化
尝试了cpu的所有四种模式,performance,Userspace,powersave,ondemand,conservative 现象仍然一致
已确认此问题和内核无关,但现象仍然存在,先挂起该issue。
登录 后才可以发表评论