From: Vlastimil Babka <vbabka@suse.cz>
To: David Rientjes <rientjes@google.com>,
Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
linux-kernel@vger.kernel.org, linux-mm@vger.kernel.org,
Minchan Kim <minchan@kernel.org>,
Michal Nazarewicz <mina86@mina86.com>,
Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>,
Christoph Lameter <cl@linux.com>, Rik van Riel <riel@redhat.com>,
Mel Gorman <mgorman@suse.de>,
Zhang Yanfei <zhangyanfei@cn.fujitsu.com>
Subject: Re: [PATCH v5 07/14] mm, compaction: khugepaged should not give up due to need_resched()
Date: Tue, 29 Jul 2014 11:49:26 +0200 [thread overview]
Message-ID: <53D76E26.6040706@suse.cz> (raw)
In-Reply-To: <alpine.DEB.2.02.1407290024550.7998@chino.kir.corp.google.com>
On 07/29/2014 09:31 AM, David Rientjes wrote:
> On Tue, 29 Jul 2014, Joonsoo Kim wrote:
>
>> I have a silly question here.
>> Why need_resched() is criteria to stop async compaction?
>> need_resched() is flagged up when time slice runs out or other reasons.
>> It means that we should stop async compaction at arbitrary timing
>> because process can be on compaction code at arbitrary moment. I think
>> that it isn't reasonable and it doesn't ensure anything. Instead of
>> this approach, how about doing compaction on certain amounts of pageblock
>> for async compaction?
>>
>
> Not a silly question at all, I had the same feeling in
> https://lkml.org/lkml/2014/5/21/730 and proposed it to be a tunable that
> indicates how much work we are willing to do for thp in the pagefault
> path. It suffers from the fact that past failure to isolate and/or
> migrate memory to free an entire pageblock doesn't indicate that the next
> pageblock will fail as well, but there has to be cutoff at some point or
> async compaction becomes unnecessarily expensive. We can always rely on
> khugepaged later to do the collapse, assuming we're not faulting memory
> and then immediately pinning it.
>
> I think there's two ways to go about it:
>
> - allow a single thp fault to be expensive and then rely on deferred
> compaction to avoid subsequent calls in the near future, or
>
> - try to make all thp faults be as least expensive as possible so that
> the cumulative effect of faulting large amounts of memory doesn't end
> up with lengthy stalls.
>
> Both of these are complex because of the potential for concurrent calls to
> memory compaction when faulting thp on several cpus.
>
> I also think the second point from that email still applies, that we
> should abort isolating pages within a pageblock for migration once it can
> no longer allow a cc->order allocation to succeed.
That was the RFC patch 15, I hope to reintroduce it soon. You could
still test it meanwhile to see if you see the same extfrag regression as
me. In my tests, kswapd/khugepaged wasn't doing enough work to
defragment the pageblocks that the stress-highalloc benchmark
(configured to behave like thp page fault) was skipping.
next prev parent reply other threads:[~2014-07-29 9:49 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-28 13:11 [PATCH v5 00/14] compaction: balancing overhead and success rates Vlastimil Babka
2014-07-28 13:11 ` [PATCH v5 01/14] mm, THP: don't hold mmap_sem in khugepaged when allocating THP Vlastimil Babka
2014-07-28 23:39 ` David Rientjes
2014-07-28 13:11 ` [PATCH v5 02/14] mm, compaction: defer each zone individually instead of preferred zone Vlastimil Babka
2014-07-28 23:59 ` David Rientjes
2014-07-29 9:02 ` Vlastimil Babka
2014-07-29 6:38 ` Joonsoo Kim
2014-07-29 9:12 ` Vlastimil Babka
2014-07-30 16:22 ` Vlastimil Babka
2014-08-01 8:51 ` Vlastimil Babka
2014-08-04 6:45 ` Joonsoo Kim
2014-07-28 13:11 ` [PATCH v5 03/14] mm, compaction: do not count compact_stall if all zones skipped compaction Vlastimil Babka
2014-07-29 0:04 ` David Rientjes
2014-07-28 13:11 ` [PATCH v5 04/14] mm, compaction: do not recheck suitable_migration_target under lock Vlastimil Babka
2014-07-28 13:11 ` [PATCH v5 05/14] mm, compaction: move pageblock checks up from isolate_migratepages_range() Vlastimil Babka
2014-07-29 0:29 ` David Rientjes
2014-07-29 0:29 ` David Rientjes
2014-07-29 9:27 ` Vlastimil Babka
2014-07-29 9:27 ` Vlastimil Babka
2014-07-29 23:02 ` David Rientjes
2014-07-29 23:02 ` David Rientjes
2014-07-29 23:21 ` Kirill A. Shutemov
2014-07-29 23:21 ` Kirill A. Shutemov
2014-07-29 23:51 ` David Rientjes
2014-07-29 23:51 ` David Rientjes
2014-07-30 9:27 ` Vlastimil Babka
2014-07-30 9:27 ` Vlastimil Babka
2014-07-30 9:39 ` Vlastimil Babka
2014-07-30 9:39 ` Vlastimil Babka
2014-07-28 13:11 ` [PATCH v5 06/14] mm, compaction: reduce zone checking frequency in the migration scanner Vlastimil Babka
2014-07-29 0:44 ` David Rientjes
2014-07-29 9:31 ` Vlastimil Babka
2014-07-28 13:11 ` [PATCH v5 07/14] mm, compaction: khugepaged should not give up due to need_resched() Vlastimil Babka
2014-07-29 0:59 ` David Rientjes
2014-07-29 9:45 ` Vlastimil Babka
2014-07-29 22:57 ` David Rientjes
2014-07-29 6:53 ` Joonsoo Kim
2014-07-29 7:31 ` David Rientjes
2014-07-29 8:27 ` Joonsoo Kim
2014-07-29 9:16 ` David Rientjes
2014-07-29 9:49 ` Vlastimil Babka [this message]
2014-07-29 22:53 ` David Rientjes
2014-07-30 9:08 ` Vlastimil Babka
2014-07-28 13:11 ` [PATCH v5 08/14] mm, compaction: periodically drop lock and restore IRQs in scanners Vlastimil Babka
2014-07-29 1:03 ` David Rientjes
2014-07-28 13:11 ` [PATCH v5 09/14] mm, compaction: skip rechecks when lock was already held Vlastimil Babka
2014-07-28 13:11 ` [PATCH v5 10/14] mm, compaction: remember position within pageblock in free pages scanner Vlastimil Babka
2014-07-28 13:11 ` [PATCH v5 11/14] mm, compaction: skip buddy pages by their order in the migrate scanner Vlastimil Babka
2014-07-29 1:05 ` David Rientjes
2014-07-28 13:11 ` [PATCH v5 12/14] mm: rename allocflags_to_migratetype for clarity Vlastimil Babka
2014-07-28 13:11 ` [PATCH v5 13/14] mm, compaction: pass gfp mask to compact_control Vlastimil Babka
2014-07-28 13:11 ` [PATCH v5 14/14] mm, compaction: try to capture the just-created high-order freepage Vlastimil Babka
2014-07-29 7:34 ` Joonsoo Kim
2014-07-29 15:34 ` Vlastimil Babka
2014-07-30 8:39 ` Joonsoo Kim
2014-07-30 9:56 ` Vlastimil Babka
2014-07-30 14:19 ` Joonsoo Kim
2014-07-30 15:05 ` Vlastimil Babka
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=53D76E26.6040706@suse.cz \
--to=vbabka@suse.cz \
--cc=akpm@linux-foundation.org \
--cc=cl@linux.com \
--cc=iamjoonsoo.kim@lge.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@vger.kernel.org \
--cc=mgorman@suse.de \
--cc=mina86@mina86.com \
--cc=minchan@kernel.org \
--cc=n-horiguchi@ah.jp.nec.com \
--cc=riel@redhat.com \
--cc=rientjes@google.com \
--cc=zhangyanfei@cn.fujitsu.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.