Atlas 800-3000服务器SMMU配置建议
2021/09/02
400
问题信息
问题来源 | 产品大类 | 产品子类 | 关键字 |
---|---|---|---|
网上问题 | 安装部署 | 驱动固件 | SMMU、IOMMU、挂死、重启、压力测试、性能 |
问题现象描述
硬件配置:Atlas 800-3000服务器
问题现象: 在BIOS开启SMMU且OS设置为smmu strict模式下,某些压力场景可能会出现死机/重启。
关键过程、根本原因分析
关键过程:
在网上多个局点做压力测试时(smmu strict模式)发生死机/重启,通过分析发现触发条件均为strict模式下的低性能。
根本原因分析:
在x86/arm平台上,smmu strict模式下的性能远低于smmu non-strict模式下的性能。但当前x86平台os默认为non-strict模式,arm平台os默认为strict模式,会造成arm平台性能远低于x86的假象。
结论、解决方案及效果
结论:arm在SMMU strict模式下性能低下,产品竞争力相对弱势,且会由于此种性能瓶颈导致各种问题。
解决方案:在BIOS设置菜单中关闭SMMU选项(MISC config > Support Smmu > Disable)。
经验总结、预防措施和规范建议
- 是否需要开启smmu?
- 若需要开启smmu,开启之后应该选用哪种模式?
性能:passthrough > non-strict > strict。
隔离程度:strict > non-strict > passthrough。
参考x86平台,由于non-strict模式为综合度较高的模式,建议使用该模式。
- 怎样设置smmu/iommu模式?
BIOS里的配置是总开关,若BIOS里将smmu关闭,不管os下怎样配置smmu均为关闭状态。
只有在BIOS里将smmu打开了,在os下做如下配置才能生效:
smmu passthrough:os cmdline中添加iommu.passthrough=1。
smmu nonstrict:os cmdline中添加iommu.non_strict=1或者iommu.strict=0。
smmu strict:os cmdline中添加iommu.non_strict=0或者iommu.strict=1。(性能极差,不推荐。)
- 是否所有的os内核均支持non-strict模式?不一定;arm smmu non-strict为2018年底才合入到内核主干,各个os支持度不尽相同;可通过如下方法查询:
- 找到该os发行版源码drivers/iommu/arm-smmu-v3.c文件上库记录。
- 确认该文件是否有如下patch;若有则支持non-strict特性,若无则不支持。
另外,Euler 2.8默认为non-strict模式,开源OS(ubuntu, redhat, centos, suse ...)默认为strict。
备注
无
本页内容