From: Andrew Morton <akpm@linux-foundation.org>
To: Tim Chen <tim.c.chen@linux.intel.com>
Cc: "Huang, Ying" <ying.huang@intel.com>,
dave.hansen@intel.com, ak@linux.intel.com, aaron.lu@intel.com,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
Hugh Dickins <hughd@google.com>, Shaohua Li <shli@kernel.org>,
Minchan Kim <minchan@kernel.org>, Rik van Riel <riel@redhat.com>,
Andrea Arcangeli <aarcange@redhat.com>,
"Kirill A . Shutemov" <kirill.shutemov@linux.intel.com>,
Vladimir Davydov <vdavydov.dev@gmail.com>,
Johannes Weiner <hannes@cmpxchg.org>,
Michal Hocko <mhocko@kernel.org>,
Hillf Danton <hillf.zj@alibaba-inc.com>,
Christian Borntraeger <borntraeger@de.ibm.com>,
Jonathan Corbet <corbet@lwn.net>
Subject: Re: [PATCH v5 3/9] mm/swap: Split swap cache into 64MB trunks
Date: Wed, 11 Jan 2017 15:09:40 -0800 [thread overview]
Message-ID: <20170111150940.25d951a121a62e1b7eff6f8d@linux-foundation.org> (raw)
In-Reply-To: <735bab895e64c930581ffb0a05b661e01da82bc5.1484082593.git.tim.c.chen@linux.intel.com>
On Wed, 11 Jan 2017 09:55:13 -0800 Tim Chen <tim.c.chen@linux.intel.com> wrote:
> The patch is to improve the scalability of the swap out/in via using
> fine grained locks for the swap cache. In current kernel, one address
> space will be used for each swap device. And in the common
> configuration, the number of the swap device is very small (one is
> typical). This causes the heavy lock contention on the radix tree of
> the address space if multiple tasks swap out/in concurrently. But in
> fact, there is no dependency between pages in the swap cache. So that,
> we can split the one shared address space for each swap device into
> several address spaces to reduce the lock contention. In the patch, the
> shared address space is split into 64MB trunks. 64MB is chosen to
> balance the memory space usage and effect of lock contention reduction.
>
> The size of struct address_space on x86_64 architecture is 408B, so with
> the patch, 6528B more memory will be used for every 1GB swap space on
> x86_64 architecture.
>
> One address space is still shared for the swap entries in the same 64M
> trunks. To avoid lock contention for the first round of swap space
> allocation, the order of the swap clusters in the initial free clusters
> list is changed. The swap space distance between the consecutive swap
> clusters in the free cluster list is at least 64M. After the first
> round of allocation, the swap clusters are expected to be freed
> randomly, so the lock contention should be reduced effectively.
Switching from a single radix-tree to an array of radix-trees to reduce
contention seems a bit hacky. That we can do this and have everything
continue to work tells me that we're simply using an inappropriate data
structure to hold this info.
next prev parent reply other threads:[~2017-01-11 23:09 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-11 17:55 [PATCH v5 0/9] mm/swap: Regular page swap optimizations Tim Chen
2017-01-11 17:55 ` [PATCH v5 1/9] mm/swap: Fix kernel message in swap_info_get() Tim Chen
2017-01-11 17:55 ` [PATCH v5 2/9] mm/swap: Add cluster lock Tim Chen
2017-01-11 23:00 ` Andrew Morton
2017-01-11 23:07 ` Jonathan Corbet
2017-01-11 23:15 ` Andrew Morton
2017-01-12 1:47 ` Huang, Ying
2017-01-12 1:58 ` Andrew Morton
2017-01-12 2:51 ` Huang, Ying
2017-01-14 4:37 ` [Update][PATCH " Huang, Ying
2017-01-12 1:23 ` [PATCH " Huang, Ying
2017-01-11 17:55 ` [PATCH v5 3/9] mm/swap: Split swap cache into 64MB trunks Tim Chen
2017-01-11 23:09 ` Andrew Morton [this message]
2017-01-11 23:19 ` Andi Kleen
2017-01-12 16:47 ` Tim Chen
2017-01-11 17:55 ` [PATCH v5 4/9] mm/swap: skip read ahead for unreferenced swap slots Tim Chen
2017-01-11 17:55 ` [PATCH v5 5/9] mm/swap: Allocate swap slots in batches Tim Chen
2017-01-11 17:55 ` [PATCH v5 6/9] mm/swap: Free swap slots in batch Tim Chen
2017-01-11 17:55 ` [PATCH v5 7/9] mm/swap: Add cache for swap slots allocation Tim Chen
2017-01-17 2:55 ` [Update][PATCH " Huang, Ying
2017-01-17 10:16 ` Michal Hocko
2017-01-17 17:24 ` Chen, Tim C
2017-01-17 20:03 ` Michal Hocko
2017-01-17 20:31 ` Chen, Tim C
2017-01-17 21:42 ` Tim Chen
2017-01-18 12:45 ` Michal Hocko
2017-01-18 18:03 ` Tim Chen
2017-01-18 18:15 ` Michal Hocko
2017-01-11 17:55 ` [PATCH v5 8/9] mm/swap: Enable swap slots cache usage Tim Chen
2017-01-11 17:55 ` [PATCH v5 9/9] mm/swap: Skip readahead only when swap slot cache is enabled Tim Chen
2017-01-16 12:02 ` [PATCH v5 0/9] mm/swap: Regular page swap optimizations Michal Hocko
2017-01-17 1:06 ` Huang, Ying
2017-01-17 7:49 ` Michal Hocko
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=20170111150940.25d951a121a62e1b7eff6f8d@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=aarcange@redhat.com \
--cc=aaron.lu@intel.com \
--cc=ak@linux.intel.com \
--cc=borntraeger@de.ibm.com \
--cc=corbet@lwn.net \
--cc=dave.hansen@intel.com \
--cc=hannes@cmpxchg.org \
--cc=hillf.zj@alibaba-inc.com \
--cc=hughd@google.com \
--cc=kirill.shutemov@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@kernel.org \
--cc=minchan@kernel.org \
--cc=riel@redhat.com \
--cc=shli@kernel.org \
--cc=tim.c.chen@linux.intel.com \
--cc=vdavydov.dev@gmail.com \
--cc=ying.huang@intel.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
Powered by JetHome