On (12/07/17 17:45), Sergey Senozhatsky wrote: [..] > On (12/07/17 13:52), Gopi Sai Teja wrote: > > If the length of the compressed page is greater than 75% of the PAGE_SIZE, > > then the page is stored uncompressed in zram space. Zram space utilization > > is improved if the threshold is 80%(5 compressed pages can be stored in > > 4 pages). > > > > If the compressed length is greater than 3068 and less than 3261, pages > > still can be stored in compressed form in zs_malloc class 3264. > > Currently these compressed pages belong to 4096 zs malloc class. > > so this makes sense. I had another idea awhile ago > > lkml.kernel.org/r/1456061274-20059-2-git-send-email-sergey.senozhat...@gmail.com > > in short, 3261 is good, but not as good as it possibly can be. for the > time being, our huge-class watermark starts at 3264. but this can > change. > > > a side note, I think we have sort of wrong API. zsmalloc knows better which > object is huge. and who knows, may be we will change the number of huge > classes someday or huge-class watermark, etc. so having "hey zsmalloc, is > this object huge or not" API seems to be better than ZRAM's enforcement > "hey zsmalloc, this object is huge".
and yes, I think I'd like to reduce the number of huge classes right now we store objects [3264+, 4096] in huge clases. with this patch lkml.kernel.org/r/1456061274-20059-4-git-send-email-sergey.senozhat...@gmail.com we have extra classes and smaller huge-class-range. so we store objects [3840+, 4096] in huge classes. less huge classes - more compressed objects; more compressed objects - lower memory usage. -ss