周一发布了一个“征求意见”补丁系列,介绍了Linux的一个新的动态内核堆栈功能。早期测试显示了显著节省内存的潜力。
根据去年LSF/MM峰会的一项提议,谷歌实现了对动态内核堆栈的支持。在过去的十年中,上游Linux内核的默认堆栈大小从之前的8K增加到了16K。谷歌一直在提供内核补丁以保持8K堆栈,但随着时间的推移,他们遇到了对更大堆栈大小的需求,这反过来又导致他们的超大规模部署增加了内存使用量。为了减少增加的内存使用,Google一直致力于动态内核堆栈,因为许多内核线程可以放在4K或8K堆栈中。
到目前为止,动态内核堆栈的正在进行的RFC补丁经过了轻微的测试,并允许从4K扩展到THREAD_SIZE限制。谷歌工程师发现,动态内核堆栈平均可以节省70%~75%的内核堆栈内存。
Pasha Tatashin发布的早期结果非常有希望,但可能取决于工作负载、虚拟化和其他因素:
Tatashin进一步补充道,“一些拥有数百万个线程的工作负载将会从这一特性中受益匪浅。”
请参阅RFC补丁系列 for those interested in this work for saving on the kernel stack memory.