作者:IT奶爸
“ SK hynix 可太会起名字了,今年新的CXL memory的系统叫 endless memory,作为memory forest的一个重要组成部分。有点韩剧的感觉,这么会起名,我也顺势把这个翻译成——无尽的思念”
前段时间,我们在实验室搭了个系统,也是CXL memory扩展和池化的事情,有些概念和计算还是挺新的,目标是解决内存浪费(memory stranding),给大厂降本增效,收益的数字也挺明显的。
具体数字就不说了,感兴趣的可以私信。
正好SK hynix在OCP上一个demo和演讲有点不谋而合的感觉,并且在实现上做了不少工作,这篇文章借他山之石,表个人之意。
分为以下几个部分:同僚的压力,现存的挑战,无尽的思念,巨大的回报。
01
同僚的压力
做这个事情的动机,首先是同僚的压力。
CPU核数一直在涨啊涨,
作为为数不多的并行总线,
内存这边压力很大啊,
带宽不够用,
颗粒技术也缓慢前进,
容量也不够用。
另一方面,CPU核数的增加和通道数的增加又导致CPU package面积变大,
让本不富裕的主板尺寸雪上加霜。
02
现存的挑战
目前数据中心存在的挑战,有两个,也是硬币的两面,
一个是内存闲置,一个是数据逐出。
内存闲置memory stranding,内存搁浅了,闲置了,边缘了。
为什么呢?
因为容器和虚机好像一个一个的箱子,
而服务器的资源好像一个一个的仓库,
这就演变成了一个装箱问题,
让这个问题更加恶化的是每个服务器节点上接受的虚机需求并不是一成不变的。
那么问题来了: 把尺寸变化的箱子装进仓库分几步?
答:一步。
直接装,剩下多少是多少。
就是下图:剩下的这部分,即图中的白色,自己用不了,其他的服务器节点自然也用不了,最终的结果就是——搁浅了,闲置了,边缘了。
再看硬币的另外一面,菊花,不是,是数据逐出,也就是下图:
多余的这部分会带来swap,以及对应的性能下降。
另外还有一个挑战,就是分布式系统中数据传输和数据复制带来的overhead。
03
无尽的思念
CXL可以提供解耦的内存系统,并且在此基础上提供内存池化和内存共享,用来解决上文当中提到的挑战。
下图是SK Hynix介绍的prototype,尼亚加拉,嗯,把内存装进冰箱要几步,属于很形象了。
四个Gen 3 x8的CXL接口四个通道的DDR4(1TB),这个容量有点少啊,难当pool的这个词语。
支持memory pooling,memory sharing(嗯?),和硬件辅助的相关功能。
memory pooling可以给每个节点在不需要重启的情况下增加或者减少内存资源。敲重点,不需要重启,不需要,不……
框图如下:
04
巨大的回报
避免了数据逐出会带来明显的性能优势,
内存利用率的提高可以看到下面表格的统计,同样的内存容量,提高了35%的利用率。
当然这个提高的比例和业务的需求紧密相关,应该是一个常规需求下的统计平均。
都是64GB,一种每人一半,都是32GB。第二种你可以号称126GB。
当年,曹操的八十万大军可能也是运用了池化的概念。
除了解决了主要的两个挑战,还有一些增值服务:
数据管理与复制
数据快照与存储
内存错误预测
参考文献:SK hynix CXL Disaggregated Memory Solution,by Jungmin Choi, Memory System Architect, SK hynix