From: Andrew Morton <akpm@linux-foundation.org>
To: Chris Li <chrisl@kernel.org>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
Wei Xu <weixugc@google.com>, Yu Zhao <yuzhao@google.com>,
Greg Thelen <gthelen@google.com>,
Chun-Tse Shao <ctshao@google.com>,
Yosry Ahmed <yosryahmed@google.com>,
Michal Hocko <mhocko@suse.com>,
Mel Gorman <mgorman@techsingularity.net>,
Huang Ying <ying.huang@intel.com>, Nhat Pham <nphamcs@gmail.com>,
Kairui Song <kasong@tencent.com>,
Barry Song <v-songbaohua@oppo.com>,
Tim Chen <tim.c.chen@linux.intel.com>
Subject: Re: [PATCH v4] mm: swap: async free swap slot cache entries
Date: Thu, 15 Feb 2024 16:11:14 -0800 [thread overview]
Message-ID: <20240215161114.6bd444ed839f778eefdf6e0a@linux-foundation.org> (raw)
In-Reply-To: <20240214-async-free-v4-1-6abe0d59f85f@kernel.org>
On Wed, 14 Feb 2024 17:02:13 -0800 Chris Li <chrisl@kernel.org> wrote:
> We discovered that 1% swap page fault is 100us+ while 50% of
> the swap fault is under 20us.
>
> Further investigation shows that a large portion of the time
> spent in the free_swap_slots() function for the long tail case.
>
> The percpu cache of swap slots is freed in a batch of 64 entries
> inside free_swap_slots(). These cache entries are accumulated
> from previous page faults, which may not be related to the current
> process.
>
> Doing the batch free in the page fault handler causes longer
> tail latencies and penalizes the current process.
>
> When the swap cache slot is full, schedule async free cached
> swap slots in a work queue, before the next swap fault comes in.
> If the next swap fault comes in very fast, before the async
> free gets a chance to run. It will directly free all the swap
> cache in the swap fault the same way as previously.
>
> Testing:
>
> Chun-Tse did some benchmark in chromebook, showing that
> zram_wait_metrics improve about 15% with 80% and 95% confidence.
>
> I recently ran some experiments on about 1000 Google production
> machines. It shows swapin latency drops in the long tail
> 100us - 500us bucket dramatically.
>
> platform (100-500us) (0-100us)
> A 1.12% -> 0.36% 98.47% -> 99.22%
> B 0.65% -> 0.15% 98.96% -> 99.46%
> C 0.61% -> 0.23% 98.96% -> 99.38%
>
What this description lacks is any description of why anyone cares.
The patch clearly decreases overall throughput (speed-vs-latency is a
common tradeoff).
And the "we don't know how to fix this properly so punt it into a
kernel thread" approach remains lame. For example, the risk that the
now-liberated allocator can outpace the async freeing, resulting in
unlimited object windup.
And here's a fun one: what happens if the producer of these objects has
SCHED_FIFO policy and it's a uniprocessor machine? If the producer sits
there allocating objects and the freeing thread never executes? Has
this been considered, and tested for?
All these concerns, risks and complexity and the changelog offers us no
reason to take any of this on. What's wrong with the existing code?
Please exhaustively describe the issues which are being seen. And
explain why those issues are sufficiently serious to leave the above
issues and risks unaddressed.
next prev parent reply other threads:[~2024-02-16 0:11 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-15 1:02 Chris Li
2024-02-15 18:31 ` Tim Chen
2024-02-15 22:57 ` Chris Li
2024-02-16 0:11 ` Andrew Morton [this message]
2024-02-16 1:38 ` Tim Chen
2024-02-16 4:16 ` Andrew Morton
2024-02-16 16:57 ` Tim Chen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240215161114.6bd444ed839f778eefdf6e0a@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=chrisl@kernel.org \
--cc=ctshao@google.com \
--cc=gthelen@google.com \
--cc=kasong@tencent.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mgorman@techsingularity.net \
--cc=mhocko@suse.com \
--cc=nphamcs@gmail.com \
--cc=tim.c.chen@linux.intel.com \
--cc=v-songbaohua@oppo.com \
--cc=weixugc@google.com \
--cc=ying.huang@intel.com \
--cc=yosryahmed@google.com \
--cc=yuzhao@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®