Re: [PATCH v7 00/21] mm/zsmalloc: add zpdesc memory descriptor for zswap.zpool

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 9/3/24 11:45 AM, Sergey Senozhatsky wrote:
> On (24/09/03 12:35), Sergey Senozhatsky wrote:
>> On (24/09/02 15:21), alexs@xxxxxxxxxx wrote:
>>> The descriptor still overlays the struct page; nothing has changed
>>> in that regard.
>>> [..]
>>> This patachset does not increase the descriptor size nor introduce any
>>> functional changes, and could save about 122Kbytes zsmalloc.o size.
>>
>> Is this number accurate?  Where does such a large saving come from?

Hi Sergey,

Thanks for asking, I collected some data on Aug 2, before the patchset,
zsmalloc.o is 1200960 bytes, after patched, it's 1076144 bytes. At that
time it's saved about 124KB, about 10%, with some debug option enabled.

Just test again with x86defconfig + ZSMALLOC + ZSMALLOC_STAT, 
on mm-unstable tree, zsmalloc.o reduces to 34960 bytes from 37328 bytes,
that's 6.3% saved.

The bloat-o-meter show in machine:
$ ./scripts/bloat-o-meter x86def/mm/zsmalloc.o x86def/mm/zsmalloc-patched.o 
add/remove: 1/1 grow/shrink: 1/5 up/down: 100/-1068 (-968)
Function                                     old     new   delta
create_zpdesc_chain                            -      92     +92
zs_compact                                  2352    2360      +8
zs_malloc                                   1334    1277     -57
__free_zspage                                291     223     -68
free_zspage                                  289     211     -78
create_page_chain                             95       -     -95
zs_page_migrate                              950     807    -143
async_free_zspage                           1252     625    -627
Total: Before=11868, After=10900, chg -8.16%

> 
> ./scripts/bloat-o-meter mm/zsmalloc.o-base mm/zsmalloc.o-patched
> add/remove: 0/0 grow/shrink: 2/6 up/down: 7/-843 (-836)
> Function                                     old     new   delta
> obj_free                                     211     215      +4
> zs_unmap_object                              568     571      +3
> zs_map_object                                661     633     -28
> SetZsPageMovable                             135      86     -49
> free_zspage                                  310     253     -57
> __free_zspage                                284     226     -58
> zs_page_migrate                             1304    1136    -168
> async_free_zspage                           1099     616    -483

Many thanks for detailed data here!

Thanks
Alex




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux