Linux 6.10在删除Sysctl Sentinel Blob方面取得进展

图片[1]-Linux 6.10在删除Sysctl Sentinel Blob方面取得进展-趣考网在过去的一年里,Linux内核的sysctl代码中进行了大量工作,通过在每个数组的末尾删除最后一个sysctl“sentinel”条目,来清除整个内核中每个数组约64字节的膨胀。这也有助于减少内核的构建时间,是一个很好的改进。在Linux 6.10中,将在不同的子系统中进行sysctl哨兵清除。

终于清除了每个sysctl数组上的最后一个空元素。例如,网络子系统中的sysctl sentinel删除已在上周排队。

图片[2]-Linux 6.10在删除Sysctl Sentinel Blob方面取得进展-趣考网

这次合并总结如下:

为什么?

通过删除sysctl sentinel元素,我们避免了内核膨胀,因为ctl_table数组从kernel/sysctl.c移到了它们自己的数组中

各自的子系统。这一举措早就开始了,以避免合并冲突;哨兵移除位是在Mathew Wilcox建议它避免在数组移出时使内核膨胀一个元素之后出现的。这个补丁集将使内核的总体构建时大小和运行时内存膨胀减少约64字节/声明的ctl_table数组。

...

在vmlinux中节省:

移除后,每个哨兵总共保存64个字节;我以x86_64为单位进行了测量,以给出合计节省的想法。实际节省将取决于单个内核配置。

*膨胀计

-“yesall”配置可节省3976字节

-减少配置可节省1263字节

节省分配的内存:

在这个集合中没有,但当从proc_sysctl.c中删除多余的分配时会发生。我在这里包括它作为上下文。在引导配置期间估计节省了6272个字节。

Nice to see this sysctl sentinel clearing work culminating after the lengthy effort over the past year.

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享