From: Andrea Arcangeli <aarcange@redhat.com>
To: Petr Holasek <pholasek@redhat.com>
Cc: Hugh Dickins <hughd@google.com>,
Davidlohr Bueso <dave@stgolabs.net>,
linux-mm@kvack.org, Andrew Morton <akpm@linux-foundation.org>,
Arjan van de Ven <arjan@linux.intel.com>
Subject: Re: [PATCH 1/1] ksm: introduce ksm_max_page_sharing per page deduplication limit
Date: Wed, 9 Dec 2015 19:10:33 +0100 [thread overview]
Message-ID: <20151209181033.GJ29105@redhat.com> (raw)
In-Reply-To: <20151209171508.GI29105@redhat.com>
On Wed, Dec 09, 2015 at 06:15:08PM +0100, Andrea Arcangeli wrote:
> Hello Petr,
>
> On Wed, Dec 09, 2015 at 05:19:59PM +0100, Petr Holasek wrote:
> > Hi Andrea,
> >
> > I've been running stress tests against this patchset for a couple of hours
> > and everything was ok. However, I've allocated ~1TB of memory and got
> > following lockup during disabling KSM with 'echo 2 > /sys/kernel/mm/ksm/run':
> >
> > [13201.060601] INFO: task ksmd:351 blocked for more than 120 seconds.
> > [13201.066812] Not tainted 4.4.0-rc4+ #5
> > [13201.070996] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
> > this message.
> > [13201.078830] ksmd D ffff883f65eb7dc8 0 351 2
> > 0x00000000
> > [13201.085903] ffff883f65eb7dc8 ffff887f66e26400 ffff883f65d5e400
> > ffff883f65eb8000
> > [13201.093343] ffffffff81a65144 ffff883f65d5e400 00000000ffffffff
> > ffffffff81a65148
> > [13201.100792] ffff883f65eb7de0 ffffffff816907e5 ffffffff81a65140
> > ffff883f65eb7df0
> > [13201.108242] Call Trace:
> > [13201.110708] [<ffffffff816907e5>] schedule+0x35/0x80
> > [13201.115676] [<ffffffff81690ace>] schedule_preempt_disabled+0xe/0x10
> > [13201.122044] [<ffffffff81692524>] __mutex_lock_slowpath+0xb4/0x130
> > [13201.128237] [<ffffffff816925bf>] mutex_lock+0x1f/0x2f
> > [13201.133395] [<ffffffff811debd2>] ksm_scan_thread+0x62/0x1f0
> > [13201.139068] [<ffffffff810c8ac0>] ? wait_woken+0x80/0x80
> > [13201.144391] [<ffffffff811deb70>] ? ksm_do_scan+0x1140/0x1140
> > [13201.150164] [<ffffffff810a4378>] kthread+0xd8/0xf0
> > [13201.155056] [<ffffffff810a42a0>] ? kthread_park+0x60/0x60
> > [13201.160551] [<ffffffff8169460f>] ret_from_fork+0x3f/0x70
> > [13201.165961] [<ffffffff810a42a0>] ? kthread_park+0x60/0x60
> >
> > It seems this is not connected with the new code, but it would be nice to
> > also make unmerge_and_remove_all_rmap_items() more scheduler friendly.
>
> Agreed. I run echo 2 many times here with big stable_node chains but
> this one never happened here, it likely shows easier on the 1TiB.
I thought the above was a problem with "scheduler friendliness" in
turn missing cond_resched() but the above is not a softlockup.
The above can't be solved by improving scheduler friendliness, we
didn't prevent the schedule for 120sec, just the mutex_lock was stuck
and a stuck was in D state for too long, which in the KSM case for
servers would be just a false positive. KSM would immediately stop
after it takes the mutex anyway so the above only informs that we
didn't run try_to_freeze() fast enough. The only trouble there could
be with suspend for non-server usage.
To hide the above (and reach try_to_freeze() quick) we could just do
trylock in ksm_scan_thread and mutex_lock_interruptible() in the other
places, but that still leaves the uninterruptible wait_on_bit to
solve.
Improving scheduler friendliness would have been more important than
avoiding the above. remove_node_from_stable_tree would also do a
cond_resched() if the rmap_item list is not empty so it was unlikely
it could generate a softlockup for 120sec even with an enormous
chain. However just like the &migrate_nodes list walk and like the
remove_stable_node_chain caller both do a cond_resched() after
remove_stable_node(), it sounds better to do it inside
remove_stable_node_chain too in case we run into a chain and we need
to free the dups. Just the previous patch won't help with the above.
--
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>
next prev parent reply other threads:[~2015-12-09 18:10 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-10 18:44 RFC [PATCH 0/1] ksm: introduce ksm_max_page_sharing per page deduplication limit Andrea Arcangeli
2015-11-10 18:44 ` [PATCH 1/1] " Andrea Arcangeli
2015-12-09 16:19 ` Petr Holasek
2015-12-09 17:15 ` Andrea Arcangeli
2015-12-09 18:10 ` Andrea Arcangeli [this message]
2015-12-10 16:06 ` Petr Holasek
2015-12-11 0:31 ` Andrew Morton
2016-01-14 23:36 ` Hugh Dickins
2016-01-16 17:49 ` Andrea Arcangeli
2016-01-16 18:00 ` Arjan van de Ven
2016-01-18 8:14 ` Hugh Dickins
2016-01-18 14:43 ` Arjan van de Ven
2016-01-18 9:10 ` Hugh Dickins
2016-01-18 9:45 ` Hugh Dickins
2016-01-18 17:46 ` Andrea Arcangeli
2016-03-17 21:34 ` Hugh Dickins
2016-03-17 21:50 ` Andrew Morton
2016-03-18 16:27 ` Andrea Arcangeli
2016-01-18 11:01 ` Mel Gorman
2016-01-18 22:19 ` Andrea Arcangeli
2016-01-19 10:43 ` Mel Gorman
2016-04-06 20:33 ` Rik van Riel
2016-04-06 22:02 ` Andrea Arcangeli
2016-09-21 15:12 ` Gavin Guo
2016-09-21 15:34 ` Andrea Arcangeli
2016-09-22 10:48 ` Gavin Guo
2016-10-28 6:26 ` Gavin Guo
2016-10-28 18:31 ` Andrea Arcangeli
2017-04-20 3:14 ` Gavin Guo
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=20151209181033.GJ29105@redhat.com \
--to=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=arjan@linux.intel.com \
--cc=dave@stgolabs.net \
--cc=hughd@google.com \
--cc=linux-mm@kvack.org \
--cc=pholasek@redhat.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.