linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Juri Lelli <juri.lelli@redhat.com>
To: peterz@infradead.org, mingo@redhat.com, rostedt@goodmis.org
Cc: linux-kernel@vger.kernel.org, luca.abeni@santannapisa.it,
	claudio@evidence.eu.com, tommaso.cucinotta@santannapisa.it,
	bristot@redhat.com, mathieu.poirier@linaro.org,
	lizefan@huawei.com, cgroups@vger.kernel.org,
	Juri Lelli <juri.lelli@redhat.com>
Subject: [PATCH v4 0/5] sched/deadline: fix cpusets bandwidth accounting
Date: Wed, 13 Jun 2018 14:17:06 +0200	[thread overview]
Message-ID: <20180613121711.5018-1-juri.lelli@redhat.com> (raw)

Hi,

This is v4 of a series of patches, authored by Mathieu (thanks for your
work and for allowing me to try to move this forward), with the intent
of fixing a long standing issue of SCHED_DEADLINE bandwidth accounting.
As originally reported by Steve [1], when hotplug and/or (certain)
cpuset reconfiguration operations take place, DEADLINE bandwidth
accounting information is lost since root domains are destroyed and
recreated.

Mathieu's approach is based on restoring bandwidth accounting info on
the newly created root domains by iterating through the (DEADLINE) tasks
belonging to the configured cpuset(s).

v3 still had issues (IMHO) because __sched_setscheduler() might race
with the aforementioned restore operation (and it actually looks racy
with cpuset ops in general), but grabbing cpuset_mutex from potential
atomic contexs is a no-go.

I reworked v3 solution a bit ending-up with something that seems to be
working [2]. The idea is simply to trylock such mutex and return -EBUSY
to the user if we raced with cpuset ops. It's gross, but didn't find
anything better (and working) yet. :/

I also don't particularly like 05/05, as it introduces lot of DEADLINE-
iness into cpuset.c. I decided not to change Mathieu's patch for the
moment and see if better approaches are suggested (a per-class thing
maybe, even though other classes don't suffer from this problem and it
is so still going to be DEADLINE specific).

I also left out Mathieu's subsequent patches to focus on this crucial
fix. They can easily come later, IMHO.

Set also available at

 https://github.com/jlelli/linux.git fixes/deadline/root-domain-accounting-v4

Thanks,

- Juri

[1] https://lkml.org/lkml/2016/2/3/966
[2] compare -before (that confirms what Steve saw) with -after
    https://git.io/vhKfW

Mathieu Poirier (5):
  sched/topology: Add check to backup comment about hotplug lock
  sched/topology: Adding function partition_sched_domains_locked()
  sched/core: Streamlining calls to task_rq_unlock()
  sched/core: Prevent race condition between cpuset and
    __sched_setscheduler()
  cpuset: Rebuild root domain deadline accounting information

 include/linux/cpuset.h         |  6 ++++
 include/linux/sched.h          |  5 +++
 include/linux/sched/deadline.h |  8 +++++
 include/linux/sched/topology.h | 10 ++++++
 kernel/cgroup/cpuset.c         | 79 +++++++++++++++++++++++++++++++++++++++++-
 kernel/sched/core.c            | 38 ++++++++++++++------
 kernel/sched/deadline.c        | 31 +++++++++++++++++
 kernel/sched/sched.h           |  3 --
 kernel/sched/topology.c        | 32 ++++++++++++++---
 9 files changed, 193 insertions(+), 19 deletions(-)

-- 
2.14.3


             reply	other threads:[~2018-06-13 12:17 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-13 12:17 Juri Lelli [this message]
2018-06-13 12:17 ` [PATCH v4 1/5] sched/topology: Add check to backup comment about hotplug lock Juri Lelli
2018-06-14 13:33   ` Steven Rostedt
2018-06-14 13:42     ` Juri Lelli
2018-06-14 13:47       ` Steven Rostedt
2018-06-14 13:50         ` Juri Lelli
2018-06-14 13:58           ` Quentin Perret
2018-06-14 14:11             ` Juri Lelli
2018-06-14 14:18               ` Quentin Perret
2018-06-14 14:30                 ` Juri Lelli
2018-06-15  8:39                   ` Quentin Perret
2018-06-13 12:17 ` [PATCH v4 2/5] sched/topology: Adding function partition_sched_domains_locked() Juri Lelli
2018-06-14 13:35   ` Steven Rostedt
2018-06-14 13:47     ` Juri Lelli
2018-06-13 12:17 ` [PATCH v4 3/5] sched/core: Streamlining calls to task_rq_unlock() Juri Lelli
2018-06-14 13:42   ` Steven Rostedt
2018-06-13 12:17 ` [PATCH v4 4/5] sched/core: Prevent race condition between cpuset and __sched_setscheduler() Juri Lelli
2018-06-14 13:45   ` Steven Rostedt
2018-06-14 13:51     ` Juri Lelli
2018-06-14 20:11   ` Steven Rostedt
2018-06-15  7:01     ` Juri Lelli
2018-06-15 13:07       ` Juri Lelli
2018-06-13 12:17 ` [PATCH v4 5/5] cpuset: Rebuild root domain deadline accounting information Juri Lelli

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=20180613121711.5018-1-juri.lelli@redhat.com \
    --to=juri.lelli@redhat.com \
    --cc=bristot@redhat.com \
    --cc=cgroups@vger.kernel.org \
    --cc=claudio@evidence.eu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lizefan@huawei.com \
    --cc=luca.abeni@santannapisa.it \
    --cc=mathieu.poirier@linaro.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=tommaso.cucinotta@santannapisa.it \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).