Re: [PATCH v4 0/3] protect page cache from freeing inode

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

 



On Mon, Feb 24, 2020 at 11:17 AM Andrew Morton
<akpm@xxxxxxxxxxxxxxxxxxxx> wrote:
>
> On Sun, 23 Feb 2020 04:31:31 -0500 Yafang Shao <laoar.shao@xxxxxxxxx> wrote:
>
> > On my server there're some running MEMCGs protected by memory.{min, low},
> > but I found the usage of these MEMCGs abruptly became very small, which
> > were far less than the protect limit. It confused me and finally I
> > found that was because of inode stealing.
> > Once an inode is freed, all its belonging page caches will be dropped as
> > well, no matter how may page caches it has. So if we intend to protect the
> > page caches in a memcg, we must protect their host (the inode) first.
> > Otherwise the memcg protection can be easily bypassed with freeing inode,
> > especially if there're big files in this memcg.
> > The inherent mismatch between memcg and inode is a trouble. One inode can
> > be shared by different MEMCGs, but it is a very rare case. If an inode is
> > shared, its belonging page caches may be charged to different MEMCGs.
> > Currently there's no perfect solution to fix this kind of issue, but the
> > inode majority-writer ownership switching can help it more or less.
>
> What are the potential regression scenarios here?  Presumably a large
> number of inodes pinned by small amounts of pagecache, consuming memory
> and CPU during list scanning.  Anything else?
>

Sorry about the late response.

Yes, lots of inodes pinned by small amounts of pagecache in a memcg
protected by memory.{min, low} could be a potential regression
scenarios.  It may take extra time to skip these inodes when a
workload outside of these memcg is trying to do page reclaim.
But these extra time can almostly be ignored comparing with the time
the memory.{min, low} may take, because memory.{min, low} takes
another round to scan all the pages again.
While if the workload trying to reclaim these protected inodes is
inside of the protected memcg, then this workload will not be effected
at all because memory.{min, low} doesn't take effect under these
condition.

> Have you considered constructing test cases to evaluate the impact of
> such things?
>

I did some mmtests::pagereclaim-performance  test with lots of
protected inodes pinned by small amounts of pagecache.  The result
doesn't show any obvious difference  with this patchset. I will update
it with these test data.  Appreciate it if you could recommend some
better tests tools.

-- 
Yafang Shao
DiDi




[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