• Steven Rostedt (Red Hat)'s avatar
    sched/debug: Add deadline scheduler bandwidth ratio to /proc/sched_debug · ef477183
    Steven Rostedt (Red Hat) authored
    Playing with SCHED_DEADLINE and cpusets, I found that I was unable to create
    new SCHED_DEADLINE tasks, with the error of EBUSY as if the bandwidth was
    already used up. I then realized there wa no way to see what bandwidth is
    used by the runqueues to debug the issue.
    
    By adding the dl_bw->bw and dl_bw->total_bw to the output of the deadline
    info in /proc/sched_debug, this allows us to see what bandwidth has been
    reserved and where a problem may exist.
    
    For example, before the issue we see the ratio of the bandwidth:
    
     # cat /proc/sys/kernel/sched_rt_runtime_us
     950000
     # cat /proc/sys/kernel/sched_rt_period_us
     1000000
    
      # grep dl /proc/sched_debug
      dl_rq[0]:
        .dl_nr_running                 : 0
        .dl_bw->bw                     : 996147
        .dl_bw->total_bw               : 0
      dl_rq[1]:
        .dl_nr_running                 : 0
        .dl_bw->bw                     : 996147
        .dl_bw->total_bw               : 0
      dl_rq[2]:
        .dl_nr_running                 : 0
        .dl_bw->bw                     : 996147
        .dl_bw->total_bw               : 0
      dl_rq[3]:
        .dl_nr_running                 : 0
        .dl_bw->bw                     : 996147
        .dl_bw->total_bw               : 0
      dl_rq[4]:
        .dl_nr_running                 : 0
        .dl_bw->bw                     : 996147
        .dl_bw->total_bw               : 0
      dl_rq[5]:
        .dl_nr_running                 : 0
        .dl_bw->bw                     : 996147
        .dl_bw->total_bw               : 0
      dl_rq[6]:
        .dl_nr_running                 : 0
        .dl_bw->bw                     : 996147
        .dl_bw->total_bw               : 0
      dl_rq[7]:
        .dl_nr_running                 : 0
        .dl_bw->bw                     : 996147
        .dl_bw->total_bw               : 0
    
    Note: (950000 / 1000000) << 20 == 996147
    
    After I played with cpusets and hit the issue, the result is now:
    
      # grep dl /proc/sched_debug
      dl_rq[0]:
        .dl_nr_running                 : 0
        .dl_bw->bw                     : 996147
        .dl_bw->total_bw               : -104857
      dl_rq[1]:
        .dl_nr_running                 : 0
        .dl_bw->bw                     : 996147
        .dl_bw->total_bw               : 104857
      dl_rq[2]:
        .dl_nr_running                 : 0
        .dl_bw->bw                     : 996147
        .dl_bw->total_bw               : 104857
      dl_rq[3]:
        .dl_nr_running                 : 0
        .dl_bw->bw                     : 996147
        .dl_bw->total_bw               : 104857
      dl_rq[4]:
        .dl_nr_running                 : 0
        .dl_bw->bw                     : 996147
        .dl_bw->total_bw               : -104857
      dl_rq[5]:
        .dl_nr_running                 : 0
        .dl_bw->bw                     : 996147
        .dl_bw->total_bw               : -104857
      dl_rq[6]:
        .dl_nr_running                 : 0
        .dl_bw->bw                     : 996147
        .dl_bw->total_bw               : -104857
      dl_rq[7]:
        .dl_nr_running                 : 0
        .dl_bw->bw                     : 996147
        .dl_bw->total_bw               : -104857
    
    This shows that there is definitely a problem as we should never have a
    negative total bandwidth.
    Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Clark Williams <williams@redhat.com>
    Cc: Juri Lelli <juri.lelli@gmail.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/20160222212825.756849091@goodmis.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    ef477183
debug.c 22.4 KB