我正在阅读一篇名为Ext4块和inode分配器改进的论文,作者在其中提到
与Ext3保留类似,Ext4为每个文件维护一个内存中的预分配范围,并使用该范围来解决由并发分配引起的碎片问题。
但是我找不到有关内存中预分配范围的任何详细信息。
根据我对本文的理解,当块分配器将块分配给LARGE文件时,它将首先尝试分配内存中预分配空间所引用的块。如果空间不足,则将查看每个块组的伙伴缓存。但是我不明白ext4如何维护预分配空间,它如何计算下一次分配要预分配的空间大小?
ext4如何维护预分配空间
根据ext4的文档,预分配空间在两个地方维护:
每个索引节点。
每个地区/ CPU组
对于小型文件(正在执行分配或后期分配),将选择每个位置组的文件预分配块,对于大型文件,将引用来自inode的文件。
如何计算要为下一次分配预分配的空间的大小?
从ext4文档中:
在通过伙伴缓存分配块之前,我们对请求块进行规范化。这样可以确保我们要求更多的块。我们将分配后获得的额外块添加到各自的预分配列表中。
在喜欢的头文件中很好地解释了分配算法的更多细节(例如,如何完成分配请求的规范化)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句