On 03/08/20 16:13, Thomas Gleixner wrote: > Vladimir Oltean <[email protected]> writes: >>> 1) When irq accounting is disabled, RT throttling kicks in as >>> expected. >>> >>> 2) With irq accounting the RT throttler does not kick in and the RCU >>> stall/lockups happen. >> What is this telling us? > > It seems that the fine grained irq time accounting affects the runtime > accounting in some way which I haven't figured out yet. >
With IRQ_TIME_ACCOUNTING, rq_clock_task() will always be incremented by a lesser-or-equal value than when not having the option; you start with the same delta_exec but slice some for the IRQ accounting, and leave the rest for the rq_clock_task() (+paravirt). IIUC this means that if you spend e.g. 10% of the time in IRQ and 90% of the time running the stress-ng RT tasks, despite having RT tasks hogging the entirety of the "available time" it is still only 90% runtime, which is below the 95% default and the throttling doesn't happen. I don't know if considering IRQ time in some way or another in sched_rt_runtime_exceeded() really is a way out here. > Thanks, > > tglx

