软件架构优化不匹配硬件架构:iTLB miss成为性能瓶颈

软硬件结合:一个反向优化的案例

一般来说,软件架构需要与硬件架深度契合,这时候才可以充分压榨出硬件的性能。一个老生常谈的例子是,与最简单的python程序相比,矩阵×矩阵算子可以通过循环并行化、访存优化和SIMD等优化,得到63000倍的性能提升。

然而,并不是所有的软件架构优化都可以与硬件架构相匹配。在这儿分享一个软件架构优化导致与CPU硬件架构不匹配的案例。为了降低代码耦合度,提升代码可读性,某业务进行微服务改造,每一个模块拆分成一个库,对应一个so动态库文件,共拆分出来300+动态库(300+MB的代码)。

这个项目的微服务改造十分成功,代码可读性得到了很好的提升。但是,性能下降了很多。

我们发现,iTLB miss造成了性能下降。微服务改造前,iTLB miss为1%-8%;改造后,iTLB miss达到了35+%。主要原因是,so动态库文件众多,且代码在内存中离散分布,需要大量的iTLB entry,而iTLB entry数量有限,远远小于需求量。

这个案例告诉我们,软件架构优化不能随心所欲,要考虑与硬件架构是否匹配。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值