Hello, On Fri, 8 May 2015, Peter Zijlstra wrote:
> Subject: sched: Introduce TASK_NOLOAD and TASK_IDLE > From: Peter Zijlstra <pet...@infradead.org> > Date: Fri May 8 14:23:45 CEST 2015 > > Currently people use TASK_INTERRUPTIBLE to idle kthreads and wait for > 'work' because TASK_UNINTERRUPTIBLE contributes to the loadavg. Having > all idle kthreads contribute to the loadavg is somewhat silly. > > Now mostly this works OK, because kthreads have all their signals > masked. However there's a few sites where this is causing problems and > TASK_UNINTERRUPTIBLE should be used, except for that loadavg issue. > > This patch adds TASK_NOLOAD which, when combined with > TASK_UNINTERRUPTIBLE avoids the loadavg accounting. > > As most of imagined usage sites are loops where a thread wants to > idle, waiting for work, a helper TASK_IDLE is introduced. After checking our code in net/netfilter/ipvs/ip_vs_sync.c, sync_thread_master(), we may also need some wrappers: - schedule_timeout_idle (instead of schedule_timeout call): __set_current_state(TASK_IDLE); return schedule_timeout(timeout); - we here are really idle, so "N" looks ok - pair of __wait_event_idle(wq, condition) and wait_event_idle(wq, condition) macros - we here are write-blocked for socket, not sure if this blocked vs idle difference is useful to represent, in new bit for this blocked state "B"=2048, with 2 TASK_NOLOAD variants: N(idle) and B(blocked, 2|1024|2048, eg. for read-blocked or write-blocked). It will need additional argument 'state'/'blocked' for *wait_event_idle(). Regards -- Julian Anastasov <j...@ssi.bg> -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/