* [patch 07/18] mm: don't reclaim inodes with many attached pages
@ 2018-11-16 23:08 akpm
2018-11-16 23:42 ` Sasha Levin
0 siblings, 1 reply; 2+ messages in thread
From: akpm @ 2018-11-16 23:08 UTC (permalink / raw)
To: akpm, dairinin, guro, mhocko, mm-commits, rdunlap, riel, stable,
torvalds
From: Roman Gushchin <guro@fb.com>
Subject: mm: don't reclaim inodes with many attached pages
Spock reported that the commit 172b06c32b94 ("mm: slowly shrink slabs with
a relatively small number of objects") leads to a regression on his setup:
periodically the majority of the pagecache is evicted without an obvious
reason, while before the change the amount of free memory was balancing
around the watermark.
The reason behind is that the mentioned above change created some minimal
background pressure on the inode cache. The problem is that if an inode
is considered to be reclaimed, all belonging pagecache page are stripped,
no matter how many of them are there. So, if a huge multi-gigabyte file
is cached in the memory, and the goal is to reclaim only few slab objects
(unused inodes), we still can eventually evict all gigabytes of the
pagecache at once.
The workload described by Spock has few large non-mapped files in the
pagecache, so it's especially noticeable.
To solve the problem let's postpone the reclaim of inodes, which have more
than 1 attached page. Let's wait until the pagecache pages will be
evicted naturally by scanning the corresponding LRU lists, and only then
reclaim the inode structure.
Link: http://lkml.kernel.org/r/20181023164302.20436-1-guro@fb.com
Signed-off-by: Roman Gushchin <guro@fb.com>
Reported-by: Spock <dairinin@gmail.com>
Tested-by: Spock <dairinin@gmail.com>
Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Rik van Riel <riel@surriel.com>
Cc: Randy Dunlap <rdunlap@infradead.org>
Cc: <stable@vger.kernel.org> [4.19.x]
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
--- a/fs/inode.c~mm-dont-reclaim-inodes-with-many-attached-pages
+++ a/fs/inode.c
@@ -730,8 +730,11 @@ static enum lru_status inode_lru_isolate
return LRU_REMOVED;
}
- /* recently referenced inodes get one more pass */
- if (inode->i_state & I_REFERENCED) {
+ /*
+ * Recently referenced inodes and inodes with many attached pages
+ * get one more pass.
+ */
+ if (inode->i_state & I_REFERENCED || inode->i_data.nrpages > 1) {
inode->i_state &= ~I_REFERENCED;
spin_unlock(&inode->i_lock);
return LRU_ROTATE;
_
^ permalink raw reply [flat|nested] 2+ messages in thread* Re: [patch 07/18] mm: don't reclaim inodes with many attached pages
2018-11-16 23:08 [patch 07/18] mm: don't reclaim inodes with many attached pages akpm
@ 2018-11-16 23:42 ` Sasha Levin
0 siblings, 0 replies; 2+ messages in thread
From: Sasha Levin @ 2018-11-16 23:42 UTC (permalink / raw)
To: akpm; +Cc: dairinin, guro, mhocko, mm-commits, rdunlap, riel, stable,
torvalds
On Fri, Nov 16, 2018 at 03:08:18PM -0800, akpm@linux-foundation.org wrote:
>From: Roman Gushchin <guro@fb.com>
>Subject: mm: don't reclaim inodes with many attached pages
>
>Spock reported that the commit 172b06c32b94 ("mm: slowly shrink slabs with
>a relatively small number of objects") leads to a regression on his setup:
>periodically the majority of the pagecache is evicted without an obvious
>reason, while before the change the amount of free memory was balancing
>around the watermark.
>
>The reason behind is that the mentioned above change created some minimal
>background pressure on the inode cache. The problem is that if an inode
>is considered to be reclaimed, all belonging pagecache page are stripped,
>no matter how many of them are there. So, if a huge multi-gigabyte file
>is cached in the memory, and the goal is to reclaim only few slab objects
>(unused inodes), we still can eventually evict all gigabytes of the
>pagecache at once.
>
>The workload described by Spock has few large non-mapped files in the
>pagecache, so it's especially noticeable.
>
>To solve the problem let's postpone the reclaim of inodes, which have more
>than 1 attached page. Let's wait until the pagecache pages will be
>evicted naturally by scanning the corresponding LRU lists, and only then
>reclaim the inode structure.
>
>Link: http://lkml.kernel.org/r/20181023164302.20436-1-guro@fb.com
>Signed-off-by: Roman Gushchin <guro@fb.com>
>Reported-by: Spock <dairinin@gmail.com>
>Tested-by: Spock <dairinin@gmail.com>
>Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
>Cc: Michal Hocko <mhocko@kernel.org>
>Cc: Rik van Riel <riel@surriel.com>
>Cc: Randy Dunlap <rdunlap@infradead.org>
>Cc: <stable@vger.kernel.org> [4.19.x]
>Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Should I grab the other 6 patches in this "series"? (see Roman's
comments here: https://www.spinics.net/lists/stable/msg265152.html).
None of those is tagged for stable.
--
Thanks,
Sasha
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2018-11-17 9:57 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-11-16 23:08 [patch 07/18] mm: don't reclaim inodes with many attached pages akpm
2018-11-16 23:42 ` Sasha Levin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox