162306a36Sopenharmony_ci:Original: Documentation/mm/z3fold.rst 262306a36Sopenharmony_ci 362306a36Sopenharmony_ci:翻译: 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci 司延腾 Yanteng Si <siyanteng@loongson.cn> 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci:校译: 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci====== 1162306a36Sopenharmony_ciz3fold 1262306a36Sopenharmony_ci====== 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ciz3fold是一个专门用于存储压缩页的分配器。它被设计为每个物理页最多可以存储三个压缩页。 1562306a36Sopenharmony_ci它是zbud的衍生物,允许更高的压缩率,保持其前辈的简单性和确定性。 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ciz3fold和zbud的主要区别是: 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci* 与zbud不同的是,z3fold允许最大的PAGE_SIZE分配。 2062306a36Sopenharmony_ci* z3fold在其页面中最多可以容纳3个压缩页面 2162306a36Sopenharmony_ci* z3fold本身没有输出任何API,因此打算通过zpool的API来使用 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci为了保持确定性和简单性,z3fold,就像zbud一样,总是在每页存储一个整数的压缩页,但是 2462306a36Sopenharmony_ci它最多可以存储3页,不像zbud最多可以存储2页。因此压缩率达到2.7倍左右,而zbud的压缩 2562306a36Sopenharmony_ci率是1.7倍左右。 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci不像zbud(但也像zsmalloc),z3fold_alloc()那样不返回一个可重复引用的指针。相反,它 2862306a36Sopenharmony_ci返回一个无符号长句柄,它编码了被分配对象的实际位置。 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci保持有效的压缩率接近于zsmalloc,z3fold不依赖于MMU的启用,并提供更可预测的回收行 3162306a36Sopenharmony_ci为,这使得它更适合于小型和反应迅速的系统。 32