From: Ryan Roberts <ryan.roberts@arm.com>
To: "Huang, Ying" <ying.huang@intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
David Hildenbrand <david@redhat.com>,
Matthew Wilcox <willy@infradead.org>,
Gao Xiang <xiang@kernel.org>, Yu Zhao <yuzhao@google.com>,
Yang Shi <shy828301@gmail.com>, Michal Hocko <mhocko@suse.com>,
Kefeng Wang <wangkefeng.wang@huawei.com>,
Barry Song <21cnbao@gmail.com>, Chris Li <chrisl@kernel.org>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v4 3/6] mm: swap: Simplify struct percpu_cluster
Date: Tue, 12 Mar 2024 08:51:23 +0000 [thread overview]
Message-ID: <2e236d6b-e6fc-428a-ad06-c2fb1dbf5c8b@arm.com> (raw)
In-Reply-To: <87cyrz51lj.fsf@yhuang6-desk2.ccr.corp.intel.com>
On 12/03/2024 07:52, Huang, Ying wrote:
> Ryan Roberts <ryan.roberts@arm.com> writes:
>
>> struct percpu_cluster stores the index of cpu's current cluster and the
>> offset of the next entry that will be allocated for the cpu. These two
>> pieces of information are redundant because the cluster index is just
>> (offset / SWAPFILE_CLUSTER). The only reason for explicitly keeping the
>> cluster index is because the structure used for it also has a flag to
>> indicate "no cluster". However this data structure also contains a spin
>> lock, which is never used in this context, as a side effect the code
>> copies the spinlock_t structure, which is questionable coding practice
>> in my view.
>>
>> So let's clean this up and store only the next offset, and use a
>> sentinal value (SWAP_NEXT_INVALID) to indicate "no cluster".
>> SWAP_NEXT_INVALID is chosen to be 0, because 0 will never be seen
>> legitimately; The first page in the swap file is the swap header, which
>> is always marked bad to prevent it from being allocated as an entry.
>> This also prevents the cluster to which it belongs being marked free, so
>> it will never appear on the free list.
>>
>> This change saves 16 bytes per cpu. And given we are shortly going to
>> extend this mechanism to be per-cpu-AND-per-order, we will end up saving
>> 16 * 9 = 144 bytes per cpu, which adds up if you have 256 cpus in the
>> system.
>>
>> Signed-off-by: Ryan Roberts <ryan.roberts@arm.com>
>
> LGTM, Thanks!
Thanks! What's a guy got to do to get Rb or Ack? :)
>
> --
> Best Regards,
> Huang, Ying
>
next prev parent reply other threads:[~2024-03-12 8:51 UTC|newest]
Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-11 15:00 [PATCH v4 0/6] Swap-out mTHP without splitting Ryan Roberts
2024-03-11 15:00 ` [PATCH v4 1/6] mm: swap: Remove CLUSTER_FLAG_HUGE from swap_cluster_info:flags Ryan Roberts
2024-03-11 15:00 ` [PATCH v4 2/6] mm: swap: free_swap_and_cache_nr() as batched free_swap_and_cache() Ryan Roberts
2024-03-20 11:10 ` Ryan Roberts
2024-03-20 14:13 ` David Hildenbrand
2024-03-20 14:21 ` Ryan Roberts
2024-03-11 15:00 ` [PATCH v4 3/6] mm: swap: Simplify struct percpu_cluster Ryan Roberts
2024-03-12 7:52 ` Huang, Ying
2024-03-12 8:51 ` Ryan Roberts [this message]
2024-03-13 1:34 ` Huang, Ying
2024-03-11 15:00 ` [PATCH v4 4/6] mm: swap: Allow storage of all mTHP orders Ryan Roberts
2024-03-12 7:51 ` Huang, Ying
2024-03-12 9:40 ` Ryan Roberts
2024-03-13 1:33 ` Huang, Ying
2024-03-20 12:22 ` Ryan Roberts
2024-03-21 4:39 ` Huang, Ying
2024-03-21 12:21 ` Ryan Roberts
2024-03-22 2:38 ` Can you help us on memory barrier usage? (was Re: [PATCH v4 4/6] mm: swap: Allow storage of all mTHP orders) Huang, Ying
2024-03-22 9:23 ` Ryan Roberts
2024-03-25 3:20 ` Huang, Ying
2024-03-22 13:19 ` Chris Li
2024-03-23 2:11 ` Akira Yokosawa
2024-03-25 0:01 ` Paul E. McKenney
2024-03-25 3:16 ` Huang, Ying
2024-03-26 17:08 ` Ryan Roberts
2024-03-25 3:00 ` Huang, Ying
2024-03-22 2:39 ` [PATCH v4 4/6] mm: swap: Allow storage of all mTHP orders Huang, Ying
2024-03-22 9:39 ` Ryan Roberts
2024-03-11 15:00 ` [PATCH v4 5/6] mm: vmscan: Avoid split during shrink_folio_list() Ryan Roberts
2024-03-11 22:30 ` Barry Song
2024-03-12 8:12 ` Ryan Roberts
2024-03-12 8:40 ` Barry Song
2024-03-15 10:43 ` David Hildenbrand
2024-03-15 10:49 ` Ryan Roberts
2024-03-15 11:12 ` David Hildenbrand
2024-03-15 11:38 ` Ryan Roberts
2024-03-18 2:16 ` Huang, Ying
2024-03-18 10:00 ` Yin, Fengwei
2024-03-18 10:05 ` David Hildenbrand
2024-03-18 15:35 ` Ryan Roberts
2024-03-18 15:36 ` Ryan Roberts
2024-03-19 2:20 ` Yin Fengwei
2024-03-19 14:40 ` Ryan Roberts
2024-03-19 2:31 ` Yin Fengwei
2024-03-11 15:00 ` [PATCH v4 6/6] mm: madvise: Avoid split during MADV_PAGEOUT and MADV_COLD Ryan Roberts
2024-03-13 7:19 ` Barry Song
2024-03-13 9:03 ` Ryan Roberts
2024-03-13 9:16 ` Barry Song
2024-03-13 9:36 ` Ryan Roberts
2024-03-13 10:37 ` Barry Song
2024-03-13 11:08 ` Ryan Roberts
2024-03-13 11:37 ` Barry Song
2024-03-13 12:02 ` Ryan Roberts
2024-03-13 9:19 ` Lance Yang
2024-03-13 14:02 ` Lance Yang
2024-03-20 13:49 ` Ryan Roberts
2024-03-20 14:35 ` Lance Yang
2024-03-20 17:38 ` Ryan Roberts
2024-03-21 1:38 ` Lance Yang
2024-03-21 13:38 ` Ryan Roberts
2024-03-21 14:55 ` Lance Yang
2024-03-21 15:24 ` Ryan Roberts
2024-03-22 0:56 ` Lance Yang
2024-03-15 10:35 ` David Hildenbrand
2024-03-15 10:55 ` Ryan Roberts
2024-03-15 11:13 ` David Hildenbrand
2024-03-20 13:57 ` Ryan Roberts
2024-03-20 14:09 ` David Hildenbrand
2024-03-12 8:01 ` [PATCH v4 0/6] Swap-out mTHP without splitting Huang, Ying
2024-03-12 8:49 ` Ryan Roberts
2024-03-12 13:56 ` Ryan Roberts
2024-03-13 1:15 ` Huang, Ying
2024-03-13 8:50 ` Ryan Roberts
2024-03-12 8:45 ` Ryan Roberts
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=2e236d6b-e6fc-428a-ad06-c2fb1dbf5c8b@arm.com \
--to=ryan.roberts@arm.com \
--cc=21cnbao@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=chrisl@kernel.org \
--cc=david@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@suse.com \
--cc=shy828301@gmail.com \
--cc=wangkefeng.wang@huawei.com \
--cc=willy@infradead.org \
--cc=xiang@kernel.org \
--cc=ying.huang@intel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.