From: Rik van Riel <riel@redhat.com>
To: dedekind1@gmail.com
Cc: linux-kernel@vger.kernel.org, mgorman@suse.de,
peterz@infradead.org, jhladky@redhat.com
Subject: Re: [PATCH] numa,sched: only consider less busy nodes as numa balancing destination
Date: Mon, 11 May 2015 10:20:13 -0400 [thread overview]
Message-ID: <5550BA9D.3030104@redhat.com> (raw)
In-Reply-To: <1431342675.1418.148.camel@sauron.fi.intel.com>
On 05/11/2015 07:11 AM, Artem Bityutskiy wrote:
> On Fri, 2015-05-08 at 16:03 -0400, Rik van Riel wrote:
>> This works well when dealing with tasks that are constantly
>> running, but fails catastrophically when dealing with tasks
>> that go to sleep, wake back up, go back to sleep, wake back
>> up, and generally mess up the load statistics that the NUMA
>> balancing code use in a random way.
>
> Sleeping is what happens a lot I believe in this workload: processes do
> a lot of network I/O, file I/O too, and a lot of IPC.
>
> Would you please expand on this a bit more - why would this scenario
> "mess up load statistics" ?
>
>> If the normal scheduler load balancer is moving tasks the
>> other way the NUMA balancer is moving them, things will
>> not converge, and tasks will have worse memory locality
>> than not doing NUMA balancing at all.
>
> Are the regular and NUMA balancers independent?
>
> Are there mechanisms to detect ping-pong situations? I'd like to verify
> your theory, and these kinds of mechanisms would be helpful.
>
>> Currently the load balancer has a preference for moving
>> tasks to their preferred nodes (NUMA_FAVOUR_HIGHER, true),
>> but there is no resistance to moving tasks away from their
>> preferred nodes (NUMA_RESIST_LOWER, false). That setting
>> was arrived at after a fair amount of experimenting, and
>> is probably correct.
>
> I guess I can try making NUMA_RESIST_LOWER to be true and see what
> happens. But probably first I need to confirm that your theory
> (balancers playing ping-pong) is correct, any hints on how would I do
> this?
Funny thing, for your workload, the kernel only keeps statistics
on forced migrations when NUMA_RESIST_LOWER is enabled.
The reason is that the tasks on your system probably sleep too
long to hit the task_hot() test most of the time.
/*
* Aggressive migration if:
* 1) destination numa is preferred
* 2) task is cache cold, or
* 3) too many balance attempts have failed.
*/
tsk_cache_hot = task_hot(p, env);
if (!tsk_cache_hot)
tsk_cache_hot = migrate_degrades_locality(p, env);
if (migrate_improves_locality(p, env) || !tsk_cache_hot ||
env->sd->nr_balance_failed > env->sd->cache_nice_tries) {
if (tsk_cache_hot) {
schedstat_inc(env->sd, lb_hot_gained[env->idle]);
schedstat_inc(p,
se.statistics.nr_forced_migrations);
}
return 1;
}
schedstat_inc(p, se.statistics.nr_failed_migrations_hot);
return 0;
I am also not sure where the se.statistics.nr_forced_migrations
statistic is exported.
--
All rights reversed
next prev parent reply other threads:[~2015-05-11 14:20 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-06 10:35 autoNUMA web workload regression Artem Bityutskiy
2015-05-06 10:37 ` Bityutskiy, Artem
2015-05-06 14:40 ` Rik van Riel
2015-05-06 15:41 ` [PATCH] numa,sched: only consider less busy nodes as numa balancing destination Rik van Riel
2015-05-06 17:00 ` Peter Zijlstra
2015-05-06 17:06 ` Rik van Riel
2015-05-07 13:29 ` Artem Bityutskiy
2015-05-08 13:13 ` Artem Bityutskiy
2015-05-08 20:03 ` Rik van Riel
2015-05-08 22:52 ` Rik van Riel
2015-05-11 11:11 ` Artem Bityutskiy
2015-05-11 14:20 ` Rik van Riel [this message]
2015-05-12 13:50 ` Artem Bityutskiy
2015-05-12 15:45 ` Rik van Riel
2015-05-13 6:29 ` Peter Zijlstra
2015-05-13 6:31 ` Peter Zijlstra
2015-05-13 10:59 ` Artem Bityutskiy
2015-05-13 13:51 ` Rik van Riel
2015-05-11 12:44 ` Jirka Hladky
2015-05-11 14:44 ` Rik van Riel
2015-05-26 20:29 ` Rik van Riel
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=5550BA9D.3030104@redhat.com \
--to=riel@redhat.com \
--cc=dedekind1@gmail.com \
--cc=jhladky@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mgorman@suse.de \
--cc=peterz@infradead.org \
/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.