本周一,针对 Linux 的新动态内核堆栈功能发布了一系列"征求意见"补丁。早期测试表明,该功能有可能大大节省内存。根据去年 LSF/MM 峰会的提议,Google已经实现了对动态内核堆栈的支持。过去十年来,上游 Linux 内核的默认堆栈大小一直是 16K,而以前是 8K。
Google一直在使用内核补丁来保持 8K 堆栈,但随着时间的推移,他们需要更大的堆栈大小,这反过来又增加了超大规模部署的内存使用量。为了减少增加的内存使用,Google一直在研究动态内核堆栈,因为许多内核线程都可以容纳在 4K 或 8K 的堆栈中。
到目前为止,动态内核堆栈的 RFC 补丁工作进展顺利,已经进行了少量测试,并允许从 4K 扩展到 THREAD_SIZE 限制。Google工程师发现,动态内核堆栈平均可以节省 70% 到 75% 的内核堆栈内存。
Pasha Tatashin 发布的早期结果很有希望,但可能取决于工作负载、虚拟化和其他因素:
Tatashin 进一步补充说:"一些拥有数百万线程的工作负载可以从这一功能中显著受益。"
对节省内核堆栈内存这项工作感兴趣的人,请参阅RFC 补丁系列。