lkml.org 
[lkml]   [2022]   [Nov]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v6 4/6] zsmalloc: Add a LRU to zs_pool to keep track of zspages in LRU order
    On (22/11/23 00:02), Yosry Ahmed wrote:
    > > There are no accesses to swapped out pages yes, but zspage holds multiple
    > > objects, which are compressed swapped out pages in this particular case.
    > > For example, zspage in class size 176 (bytes) can hold 93 objects per-zspage,
    > > that is 93 compressed swapped out pages. Consider ZS_FULL zspages which
    > > is at the tail of the LRU list. Suppose that we page-faulted 20 times and
    > > read 20 objects from that zspage, IOW zspage has been in use 20 times very
    > > recently, while writeback still considers it to be "not-used" and will
    > > evict it.
    > >
    > > So if this works for you then I'm fine. But we probably, like you suggested,
    > > can document a couple of things here - namely why WRITE access to zspage
    > > counts as "zspage is in use" but READ access to the same zspage does not
    > > count as "zspage is in use".
    > >
    >
    > I guess the key here is that we have an LRU of zspages, when we really
    > want an LRU of compressed objects. In some cases, we may end up
    > reclaiming the wrong pages.

    Yes, completely agree.

    [..]
    > Ideally, we would have an LRU of objects instead, but this would be
    > very complicated with the current form of writeback.

    Right. So we have two writebacks now: one in zram and on in zsmalloc.
    And zram writeback works with objects' access patterns, it simply tracks
    timestamps per entry and it doesn't know/care about zspages. Writeback
    targets in zram are selected by simply looking at timestamps of objects
    (compressed normal pages). And that is the right level for LRU, allocator
    is too low-level for this.

    I'm looking forward to seeing new LRU implementation (at a level higher
    than allocator) :)

    \
     
     \ /
      Last update: 2022-11-24 04:22    [W:3.757 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site