On 8/8/24 11:37 AM, Matthew Wilcox wrote: > I've written about it here: > https://kernelnewbies.org/MatthewWilcox/Memdescs > https://kernelnewbies.org/MatthewWilcox/FolioAlloc > https://kernelnewbies.org/MatthewWilcox/Memdescs/Path Thanks for sharing! > >> So I guess if we have something >> >> struct zspage { >> .. >> struct zpdesc *first_desc; >> .. >> } >> >> and we "chain" zpdesc-s to form a zspage, and make each of them point to >> a corresponding struct page (memdesc -> *page), then it'll resemble current >> zsmalloc and should work for everyone? I also assume for zspdesc-s zsmalloc >> will need to maintain a dedicated kmem_cache? > Right, we could do that. Each memdesc has to be a multiple of 16 bytes, > sp we'd be doing something like allocating 32 bytes for each page. > Is there really 32 bytes of information that we want to store for > each page? Or could we store all of the information in (a somewhat > larger) zspage? Assuming we allocate 3 pages per zspage, if we allocate > an extra 64 bytes in the zspage, we've saved 32 bytes per zspage. Thanks for the suggestions! Yes, it's a good direction we could try after this patchset. Thanks for you all!