summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorMinchan Kim <minchan@kernel.org>2015-04-16 01:15:39 +0200
committerLinus Torvalds <torvalds@linux-foundation.org>2015-04-16 01:35:21 +0200
commit7b60a68529b0d827d26ea3426c2addd071bff789 (patch)
tree5d812c66da45b12b2ae005b7db950596751e3ba5 /lib
parentzram: support compaction (diff)
downloadlinux-7b60a68529b0d827d26ea3426c2addd071bff789.tar.xz
linux-7b60a68529b0d827d26ea3426c2addd071bff789.zip
zsmalloc: record handle in page->private for huge object
We store handle on header of each allocated object so it increases the size of each object by sizeof(unsigned long). If zram stores 4096 bytes to zsmalloc(ie, bad compression), zsmalloc needs 4104B-class to add handle. However, 4104B-class has 1-pages_per_zspage so wasted size by internal fragment is 8192 - 4104, which is terrible. So this patch records the handle in page->private on such huge object(ie, pages_per_zspage == 1 && maxobj_per_zspage == 1) instead of header of each object so we could use 4096B-class, not 4104B-class. Signed-off-by: Minchan Kim <minchan@kernel.org> Cc: Juneho Choi <juno.choi@lge.com> Cc: Gunho Lee <gunho.lee@lge.com> Cc: Luigi Semenzato <semenzato@google.com> Cc: Dan Streetman <ddstreet@ieee.org> Cc: Seth Jennings <sjennings@variantweb.net> Cc: Nitin Gupta <ngupta@vflare.org> Cc: Jerome Marchand <jmarchan@redhat.com> Cc: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com> Cc: Mel Gorman <mel@csn.ul.ie> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'lib')
0 files changed, 0 insertions, 0 deletions