Loading

openEuler etMem的思考

etmem作为实际上线的产品,有很多值得借鉴的地方。

根据openEuler官方的说法,etmem性能提升最大30%多,下面说一下我自己对etmem的一些问题的思考:

  1. 两态通信易抖动。为了在用户态做决策(我推测是为了使用各种牛逼的算法),每次都是秒级的把内存信息从内核dump到用户态,会不会容易造成抖动,特别是对敏感的业务无法承受。到了最后,为了稳定只能放弃掉部分性能优化。

  2. 路径过长不合适。从内核态dump出的信息,用户态做出决策,再返回到内核态,再做内存页的迁移,整个过程,最少也要数十秒,路径太长,费时费力。而对于内存访问这么高频的行为,显得尤为矛盾。

  3. 适配粒度不够细。无法对容器粒度做出更精准的适配。比如一些冷容器的内存可能会全部被迁移到aep或被压缩。

  4. 内存决策不精细。aep的读写速度完全不匹配,读快写慢,特别是大量读写的场景,根据我们的测试,aep读写速度相差能达到近20倍。没有看到etmem适配。

  5. 带宽占用难控制。多级内存的迁移很可能造成内存占用进而影响业务,这方面没看到自适应的方案。

另外,Kernel 5.15主线已经进入了DAMON(去看看),根据官方说法,DAMON扫描内存的代价极小可忽略,etmem原理与此一致,都是access bit重置清零后,再扫描,看bit是否又被置位1,以此监控和统计内存页的访问频次,只不过DAMON只是扫描加madvise的基础设施,全部在内核态。

ref:
etmem宣传
官方code

posted @ 2022-06-16 09:33  skpupil  阅读(566)  评论(0编辑  收藏  举报