From: "Huang\, Ying" <ying.huang@intel.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Jonathan Corbet <corbet@lwn.net>,
Tim Chen <tim.c.chen@linux.intel.com>,
"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>
Subject: Re: [PATCH v5 2/9] mm/swap: Add cluster lock
Date: Thu, 12 Jan 2017 09:47:51 +0800 [thread overview]
Message-ID: <8760ll122g.fsf@yhuang-dev.intel.com> (raw)
In-Reply-To: <20170111151526.e905b91d6f1ee9f21e6907be@linux-foundation.org> (Andrew Morton's message of "Wed, 11 Jan 2017 15:15:26 -0800")
Hi, Andrew,
Andrew Morton <akpm@linux-foundation.org> writes:
> On Wed, 11 Jan 2017 16:07:29 -0700 Jonathan Corbet <corbet@lwn.net> wrote:
>
>> On Wed, 11 Jan 2017 15:00:29 -0800
>> Andrew Morton <akpm@linux-foundation.org> wrote:
>>
>> > hm, bit_spin_lock() is a nasty thing. It is slow and it doesn't have
>> > all the lockdep support.
>> >
>> > Would the world end if we added a spinlock to swap_cluster_info?
>>
>> FWIW, I asked the same question in December, this is what I got:
>>
>> ...
>>
>> > > Why the roll-your-own locking and data structures here? To my naive
>> > > understanding, it seems like you could do something like:
>> > >
>> > > struct swap_cluster_info {
>> > > spinlock_t lock;
>> > > atomic_t count;
>> > > unsigned int flags;
>> > > };
>> > >
>> > > Then you could use proper spinlock operations which, among other things,
>> > > would make the realtime folks happier. That might well help with the
>> > > cache-line sharing issues as well. Some of the count manipulations could
>> > > perhaps be done without the lock entirely; similarly, atomic bitops might
>> > > save you the locking for some of the flag tweaks - though I'd have to look
>> > > more closely to be really sure of that.
>> > >
>> > > The cost, of course, is the growth of this structure, but you've already
>> > > noted that the overhead isn't all that high; seems like it could be worth
>> > > it.
>> >
>> > Yes. The data structure you proposed is much easier to be used than the
>> > current one. The main concern is the RAM usage. The size of the data
>> > structure you proposed is about 80 bytes, while that of the current one
>> > is about 8 bytes. There will be one struct swap_cluster_info for every
>> > 1MB swap space, so for 1TB swap space, the total size will be 80M
>> > compared with 8M of current implementation.
>
> Where did this 80 bytes come from? That swap_cluster_info is 12 bytes
> and could perhaps be squeezed into 8 bytes if we can get away with a
> 24-bit "count".
Sorry, I made a mistake when measuring the size of swap_cluster_info
when I sent that email, because I turned on the lockdep when measuring.
I have sent out a correction email to Jonathan when I realized that
later.
So the latest size measuring result is:
If we use bit_spin_lock, the size of cluster_swap_info will,
- increased from 4 bytes to 8 bytes on 64 bit platform
- keep as 4 bytes on 32 bit platform
If we use normal spinlock (queue spinlock), the size of cluster_swap_info will,
- increased from 4 bytes to 8 bytes on 64 bit platform
- increased from 4 bytes to 8 bytes on 32 bit platform
So the difference occurs on 32 bit platform. If the size increment on
32 bit platform is OK, then I think it should be good to use normal
spinlock instead of bit_spin_lock. Personally, I am OK for that. But I
don't know whether there will be some embedded world people don't like
it.
Best Regards,
Huang, Ying
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
WARNING: multiple messages have this Message-ID (diff)
From: "Huang\, Ying" <ying.huang@intel.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Jonathan Corbet <corbet@lwn.net>,
Tim Chen <tim.c.chen@linux.intel.com>, "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>
Subject: Re: [PATCH v5 2/9] mm/swap: Add cluster lock
Date: Thu, 12 Jan 2017 09:47:51 +0800 [thread overview]
Message-ID: <8760ll122g.fsf@yhuang-dev.intel.com> (raw)
In-Reply-To: <20170111151526.e905b91d6f1ee9f21e6907be@linux-foundation.org> (Andrew Morton's message of "Wed, 11 Jan 2017 15:15:26 -0800")
Hi, Andrew,
Andrew Morton <akpm@linux-foundation.org> writes:
> On Wed, 11 Jan 2017 16:07:29 -0700 Jonathan Corbet <corbet@lwn.net> wrote:
>
>> On Wed, 11 Jan 2017 15:00:29 -0800
>> Andrew Morton <akpm@linux-foundation.org> wrote:
>>
>> > hm, bit_spin_lock() is a nasty thing. It is slow and it doesn't have
>> > all the lockdep support.
>> >
>> > Would the world end if we added a spinlock to swap_cluster_info?
>>
>> FWIW, I asked the same question in December, this is what I got:
>>
>> ...
>>
>> > > Why the roll-your-own locking and data structures here? To my naive
>> > > understanding, it seems like you could do something like:
>> > >
>> > > struct swap_cluster_info {
>> > > spinlock_t lock;
>> > > atomic_t count;
>> > > unsigned int flags;
>> > > };
>> > >
>> > > Then you could use proper spinlock operations which, among other things,
>> > > would make the realtime folks happier. That might well help with the
>> > > cache-line sharing issues as well. Some of the count manipulations could
>> > > perhaps be done without the lock entirely; similarly, atomic bitops might
>> > > save you the locking for some of the flag tweaks - though I'd have to look
>> > > more closely to be really sure of that.
>> > >
>> > > The cost, of course, is the growth of this structure, but you've already
>> > > noted that the overhead isn't all that high; seems like it could be worth
>> > > it.
>> >
>> > Yes. The data structure you proposed is much easier to be used than the
>> > current one. The main concern is the RAM usage. The size of the data
>> > structure you proposed is about 80 bytes, while that of the current one
>> > is about 8 bytes. There will be one struct swap_cluster_info for every
>> > 1MB swap space, so for 1TB swap space, the total size will be 80M
>> > compared with 8M of current implementation.
>
> Where did this 80 bytes come from? That swap_cluster_info is 12 bytes
> and could perhaps be squeezed into 8 bytes if we can get away with a
> 24-bit "count".
Sorry, I made a mistake when measuring the size of swap_cluster_info
when I sent that email, because I turned on the lockdep when measuring.
I have sent out a correction email to Jonathan when I realized that
later.
So the latest size measuring result is:
If we use bit_spin_lock, the size of cluster_swap_info will,
- increased from 4 bytes to 8 bytes on 64 bit platform
- keep as 4 bytes on 32 bit platform
If we use normal spinlock (queue spinlock), the size of cluster_swap_info will,
- increased from 4 bytes to 8 bytes on 64 bit platform
- increased from 4 bytes to 8 bytes on 32 bit platform
So the difference occurs on 32 bit platform. If the size increment on
32 bit platform is OK, then I think it should be good to use normal
spinlock instead of bit_spin_lock. Personally, I am OK for that. But I
don't know whether there will be some embedded world people don't like
it.
Best Regards,
Huang, Ying
next prev parent reply other threads:[~2017-01-12 1:47 UTC|newest]
Thread overview: 63+ 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 ` 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 ` Tim Chen
2017-01-11 17:55 ` [PATCH v5 2/9] mm/swap: Add cluster lock Tim Chen
2017-01-11 17:55 ` Tim Chen
2017-01-11 23:00 ` Andrew Morton
2017-01-11 23:00 ` Andrew Morton
2017-01-11 23:07 ` Jonathan Corbet
2017-01-11 23:07 ` Jonathan Corbet
2017-01-11 23:15 ` Andrew Morton
2017-01-11 23:15 ` Andrew Morton
2017-01-12 1:47 ` Huang, Ying [this message]
2017-01-12 1:47 ` Huang, Ying
2017-01-12 1:58 ` Andrew Morton
2017-01-12 1:58 ` Andrew Morton
2017-01-12 2:51 ` Huang, Ying
2017-01-12 2:51 ` Huang, Ying
2017-01-14 4:37 ` [Update][PATCH " Huang, Ying
2017-01-14 4:37 ` Huang, Ying
2017-01-12 1:23 ` [PATCH " Huang, Ying
2017-01-12 1:23 ` Huang, Ying
2017-01-11 17:55 ` [PATCH v5 3/9] mm/swap: Split swap cache into 64MB trunks Tim Chen
2017-01-11 17:55 ` Tim Chen
2017-01-11 23:09 ` Andrew Morton
2017-01-11 23:09 ` Andrew Morton
2017-01-11 23:19 ` Andi Kleen
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 ` 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 ` 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 ` Tim Chen
2017-01-11 17:55 ` [PATCH v5 7/9] mm/swap: Add cache for swap slots allocation Tim Chen
2017-01-11 17:55 ` Tim Chen
2017-01-17 2:55 ` [Update][PATCH " Huang, Ying
2017-01-17 2:55 ` Huang, Ying
2017-01-17 10:16 ` Michal Hocko
2017-01-17 10:16 ` Michal Hocko
2017-01-17 17:24 ` Chen, Tim C
2017-01-17 17:24 ` Chen, Tim C
2017-01-17 20:03 ` Michal Hocko
2017-01-17 20:03 ` Michal Hocko
2017-01-17 20:31 ` Chen, Tim C
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 12:45 ` Michal Hocko
2017-01-18 18:03 ` Tim Chen
2017-01-18 18:15 ` Michal Hocko
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 ` 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-11 17:55 ` Tim Chen
2017-01-16 12:02 ` [PATCH v5 0/9] mm/swap: Regular page swap optimizations Michal Hocko
2017-01-16 12:02 ` Michal Hocko
2017-01-17 1:06 ` Huang, Ying
2017-01-17 1:06 ` Huang, Ying
2017-01-17 7:49 ` Michal Hocko
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=8760ll122g.fsf@yhuang-dev.intel.com \
--to=ying.huang@intel.com \
--cc=aarcange@redhat.com \
--cc=aaron.lu@intel.com \
--cc=ak@linux.intel.com \
--cc=akpm@linux-foundation.org \
--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 \
/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.