zsmalloc: backport from 5994eabf3bbb
Backport zsmalloc from commit 5994eabf3bbb ("merge mm-hotfixes-stable into mm-stable to pick up depended-upon changes"). Signed-off-by: Juhyung Park <qkrwngud825@gmail.com>
This commit is contained in:
parent
e9933557cb
commit
cfd1b6ca17
3 changed files with 500 additions and 651 deletions
|
@ -55,5 +55,7 @@ void zs_unmap_object(struct zs_pool *pool, unsigned long handle);
|
|||
unsigned long zs_get_total_pages(struct zs_pool *pool);
|
||||
unsigned long zs_compact(struct zs_pool *pool);
|
||||
|
||||
unsigned int zs_lookup_class_index(struct zs_pool *pool, unsigned int size);
|
||||
|
||||
void zs_pool_stats(struct zs_pool *pool, struct zs_pool_stats *stats);
|
||||
#endif
|
||||
|
|
30
mm/Kconfig
30
mm/Kconfig
|
@ -708,15 +708,12 @@ config Z3FOLD
|
|||
still there.
|
||||
|
||||
config ZSMALLOC
|
||||
tristate "Memory allocator for compressed pages"
|
||||
tristate "N:1 compression allocator (zsmalloc)"
|
||||
depends on MMU
|
||||
help
|
||||
zsmalloc is a slab-based memory allocator designed to store
|
||||
compressed RAM pages. zsmalloc uses virtual memory mapping
|
||||
in order to reduce fragmentation. However, this results in a
|
||||
non-standard allocator interface where a handle, not a pointer, is
|
||||
returned by an alloc(). This handle must be mapped in order to
|
||||
access the allocated space.
|
||||
pages of various compression levels efficiently. It achieves
|
||||
the highest storage density with the least amount of fragmentation.
|
||||
|
||||
config ZSMALLOC_STAT
|
||||
bool "Export zsmalloc statistics"
|
||||
|
@ -724,10 +721,29 @@ config ZSMALLOC_STAT
|
|||
select DEBUG_FS
|
||||
help
|
||||
This option enables code in the zsmalloc to collect various
|
||||
statistics about whats happening in zsmalloc and exports that
|
||||
statistics about what's happening in zsmalloc and exports that
|
||||
information to userspace via debugfs.
|
||||
If unsure, say N.
|
||||
|
||||
config ZSMALLOC_CHAIN_SIZE
|
||||
int "Maximum number of physical pages per-zspage"
|
||||
default 8
|
||||
range 4 16
|
||||
depends on ZSMALLOC
|
||||
help
|
||||
This option sets the upper limit on the number of physical pages
|
||||
that a zmalloc page (zspage) can consist of. The optimal zspage
|
||||
chain size is calculated for each size class during the
|
||||
initialization of the pool.
|
||||
|
||||
Changing this option can alter the characteristics of size classes,
|
||||
such as the number of pages per zspage and the number of objects
|
||||
per zspage. This can also result in different configurations of
|
||||
the pool, as zsmalloc merges size classes with similar
|
||||
characteristics.
|
||||
|
||||
For more information, see zsmalloc documentation.
|
||||
|
||||
config GENERIC_EARLY_IOREMAP
|
||||
bool
|
||||
|
||||
|
|
1087
mm/zsmalloc.c
1087
mm/zsmalloc.c
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue