Loading Documentation/vm/zsmalloc.txt +36 −24 Original line number Diff line number Diff line .. _zsmalloc: ======== zsmalloc -------- ======== This allocator is designed for use with zram. Thus, the allocator is supposed to work well under low memory conditions. In particular, it Loading Loading @@ -31,40 +34,49 @@ be mapped using zs_map_object() to get a usable pointer and subsequently unmapped using zs_unmap_object(). stat ---- ==== With CONFIG_ZSMALLOC_STAT, we could see zsmalloc internal information via /sys/kernel/debug/zsmalloc/<user name>. Here is a sample of stat output: ``/sys/kernel/debug/zsmalloc/<user name>``. Here is a sample of stat output:: # cat /sys/kernel/debug/zsmalloc/zram0/classes class size almost_full almost_empty obj_allocated obj_used pages_used pages_per_zspage .. .. ... ... 9 176 0 1 186 129 8 4 10 192 1 0 2880 2872 135 3 11 208 0 1 819 795 42 2 12 224 0 1 219 159 12 4 .. .. ... ... class index size object size zspage stores almost_empty the number of ZS_ALMOST_EMPTY zspages(see below) almost_full the number of ZS_ALMOST_FULL zspages(see below) obj_allocated the number of objects allocated obj_used the number of objects allocated to the user pages_used the number of pages allocated for the class pages_per_zspage the number of 0-order pages to make a zspage class: index size: object size zspage stores almost_empty: the number of ZS_ALMOST_EMPTY zspages(see below) almost_full: the number of ZS_ALMOST_FULL zspages(see below) obj_allocated: the number of objects allocated obj_used: the number of objects allocated to the user pages_used: the number of pages allocated for the class pages_per_zspage: the number of 0-order pages to make a zspage We assign a zspage to ZS_ALMOST_EMPTY fullness group when n <= N / f, where We assign a zspage to ZS_ALMOST_EMPTY fullness group when: n <= N / f, where n = number of allocated objects N = total number of objects zspage can store f = fullness_threshold_frac(ie, 4 at the moment) * n = number of allocated objects * N = total number of objects zspage can store * f = fullness_threshold_frac(ie, 4 at the moment) Similarly, we assign zspage to: ZS_ALMOST_FULL when n > N / f ZS_EMPTY when n == 0 ZS_FULL when n == N * ZS_ALMOST_FULL when n > N / f * ZS_EMPTY when n == 0 * ZS_FULL when n == N Loading
Documentation/vm/zsmalloc.txt +36 −24 Original line number Diff line number Diff line .. _zsmalloc: ======== zsmalloc -------- ======== This allocator is designed for use with zram. Thus, the allocator is supposed to work well under low memory conditions. In particular, it Loading Loading @@ -31,40 +34,49 @@ be mapped using zs_map_object() to get a usable pointer and subsequently unmapped using zs_unmap_object(). stat ---- ==== With CONFIG_ZSMALLOC_STAT, we could see zsmalloc internal information via /sys/kernel/debug/zsmalloc/<user name>. Here is a sample of stat output: ``/sys/kernel/debug/zsmalloc/<user name>``. Here is a sample of stat output:: # cat /sys/kernel/debug/zsmalloc/zram0/classes class size almost_full almost_empty obj_allocated obj_used pages_used pages_per_zspage .. .. ... ... 9 176 0 1 186 129 8 4 10 192 1 0 2880 2872 135 3 11 208 0 1 819 795 42 2 12 224 0 1 219 159 12 4 .. .. ... ... class index size object size zspage stores almost_empty the number of ZS_ALMOST_EMPTY zspages(see below) almost_full the number of ZS_ALMOST_FULL zspages(see below) obj_allocated the number of objects allocated obj_used the number of objects allocated to the user pages_used the number of pages allocated for the class pages_per_zspage the number of 0-order pages to make a zspage class: index size: object size zspage stores almost_empty: the number of ZS_ALMOST_EMPTY zspages(see below) almost_full: the number of ZS_ALMOST_FULL zspages(see below) obj_allocated: the number of objects allocated obj_used: the number of objects allocated to the user pages_used: the number of pages allocated for the class pages_per_zspage: the number of 0-order pages to make a zspage We assign a zspage to ZS_ALMOST_EMPTY fullness group when n <= N / f, where We assign a zspage to ZS_ALMOST_EMPTY fullness group when: n <= N / f, where n = number of allocated objects N = total number of objects zspage can store f = fullness_threshold_frac(ie, 4 at the moment) * n = number of allocated objects * N = total number of objects zspage can store * f = fullness_threshold_frac(ie, 4 at the moment) Similarly, we assign zspage to: ZS_ALMOST_FULL when n > N / f ZS_EMPTY when n == 0 ZS_FULL when n == N * ZS_ALMOST_FULL when n > N / f * ZS_EMPTY when n == 0 * ZS_FULL when n == N