Hello! On Tue, Nov 22, 2022 at 12:07:42PM +0900, Sergey Senozhatsky wrote: > On (22/11/22 12:00), Sergey Senozhatsky wrote: > > On (22/11/21 15:44), Johannes Weiner wrote: > > > This looks pretty great. > > > > > > However, I'm curious why it's specific to zram, and not part of > > > zsmalloc? That way zswap would benefit as well, without having to > > > duplicate the implementation. This happened for example with > > > page_same_filled() and zswap_is_page_same_filled(). > > > > > > It's zsmalloc's job to store content efficiently, so couldn't this > > > feature (just like the page_same_filled one) be an optimization that > > > zsmalloc does transparently for all its users? > > > > Yea, that's a much needed functionality, but things may be "complicated". > > We had that KSM-ish thing in the past in zram. Very briefly as we quickly > > found out that the idea was patented by some company in China and we couldn't > > figure our if it was safe to land that code upstream. So we ended up dropping > > the patches. > > > > https://lore.kernel.org/lkml/1494556204-25796-1-git-send-email-iamjoonsoo.kim@xxxxxxx/ > > IIRC that was patent in question: > > https://patentimages.storage.googleapis.com/e2/66/9e/0ddbfae5c182ac/US9977598.pdf I think the patent is talking about "mapping the virtual address" (like in KSM). But zram works with the "handle" abstraction, which is a boxed pointer to the required object. I think my implementation and the patent is slightly different. Also, the patent speaks of "compressing" pages. In this case, we can add zs_merge() function (like zs_compact()), that is, remove the merge logic at the allocator level. zsmalloc doesn't say anything about what objects it can work with. Implementation at the zsmalloc level is possible, though more complicated that at the zram level. I believe that we can implement at least one of the options I proposed. What do you think? -- Thank you, Alexey