lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1490982277-4437-1-git-send-email-a.balsini@sssup.it>
Date:   Fri, 31 Mar 2017 19:44:34 +0200
From:   Alessio Balsini <a.balsini@...up.it>
To:     Ingo Molnar <mingo@...hat.com>,
        Peter Zijlstra <peterz@...radead.org>
Cc:     Alessio Balsini <a.balsini@...up.it>,
        Tommaso Cucinotta <tommaso.cucinotta@...up.it>,
        Juri Lelli <juri.lelli@....com>,
        Daniel Bristot de Oliveira <bristot@...hat.com>,
        Steven Rostedt <rostedt@...dmis.org>,
        Andrea Parri <parri.andrea@...il.com>,
        Luca Abeni <luca.abeni@...tannapisa.it>,
        linux-kernel@...r.kernel.org
Subject: [RFC PATCH 0/3] RT bandwidth constraints enforced by hierarchical DL scheduling 

Hi,

This patchset provides hierarchical RT scheduling by nesting the SCHED_RT
fixed-priority scheduler within SCHED_DEADLINE reservations, namely allowing
for groups of tasks to be scheduled within a SCHED_DEADLINE reservation,
choosing tasks within each group according to their RT priorities.

+-- SCHED_DL scheduler
   +-- SCHED_DL task 1 <rt=..., dl=..., period=...>
   +-- SCHED_DL task 2 <rt=..., dl=..., period=...>
   +-- ...
   +-- SCHED_RT group 1 <rt=..., period=...>
   |  +-- T1 <rtprio=...>
   |  +-- T2 <rtprio=...>
   +-- SCHED_RT group 2 <rt=..., period=...>
   |  +-- T3 <rtprio=...>
   |  +-- T4 <rtprio=...>
   ...

Usage Example:
  mkdir /sys/fs/cgroup/cpu/rt1
  echo 100000 > /sys/fs/cgroup/cpu/rt1/cpu.rt_period_us
  echo 10000 > /sys/fs/cgroup/cpu/rt1/cpu.rt_runtime_us
  echo $tid1 > /sys/fs/cgroup/cpu/rt1/tasks
  echo $tid2 > /sys/fs/cgroup/cpu/rt1/tasks
  chrt -r -p $rtprio1 $tid1
  chrt -r -p $rtprio2 $tid2

This is done by:
- ) 1st patch: removing the SCHED_RT-related cgroup mechanisms.
- ) 2nd patch: adding a new hierarchical cgroup throttling mechanism for
      SCHED_RT tasks that exploits SCHED_DL.
- ) 3rd patch: includes the RT cgroups migration of a throttled rq, seeking
      for available bandwidth on other CPUs.

For each group with given <runtime, period> parameters, per-CPU SCHED_DEADLINE
entities with the same parameters are created and independently scheduled on
each CPU. The scheduling entity includes a rt_rq. RT tasks belonging to the
group are free to migrate across the rt_rq of the group, whenever runtime is
available.
For example, if runtime=10ms and period(=deadline)=100ms, and we're on a
quad-core system, then a CPU-hog RT task would exhaust the 10ms on its current
CPU first, then it would migrate to consume the 10ms runtime available on
another CPU, etc., up until running for a total of 40ms, before being throttled
waiting for the next period.

The patchset is based on the preliminary version presented by Andrea Parri at
RTLWS 2014, considering also various issues discussed on LKML:

https://lkml.org/lkml/2016/10/9/164

including recent comments on the need for hierarchical CBS, eg:

https://www.spinics.net/lists/linux-rt-users/msg16003.html

Open issues that deserve attention:
-) The code currently includes independent push/pull functions for RT groups,
     those might be refactored together with the ones available in rt.c.
-) Affinity constraints for current throttling of RT tasks differs from the
     SCHED_DL-based (ie, no arbitrary affinities allowed in SCHED_DL).

The mechanism has been evaluated on several synthetic tests with RT groups,
containing RT tasks with different priorities and the groups bandwidths are
limited as expected. If anyone is interested in the specific tests, we can
share some code.

Alessio Balsini (3):
  sched/rt: Removed CGroup functionalities from RT scheduling class
  sched/deadline: Hierarchical scheduling with DL on top of RT
  sched/rt: DL-RT group migration from throttled rq

 include/linux/sched.h    |   13 +-
 kernel/sched/autogroup.c |    4 +-
 kernel/sched/core.c      |  111 ++--
 kernel/sched/deadline.c  |  259 ++++++---
 kernel/sched/debug.c     |    3 -
 kernel/sched/rt.c        | 1311 +++++++++++++++-------------------------------
 kernel/sched/sched.h     |  172 ++++--
 7 files changed, 837 insertions(+), 1036 deletions(-)

-- 
2.7.4

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ