lkml.org 
[lkml]   [2015]   [May]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH] sched: Introduce TASK_NOLOAD and TASK_IDLE

Hello,

On Fri, 8 May 2015, Peter Zijlstra wrote:

> Subject: sched: Introduce TASK_NOLOAD and TASK_IDLE
> From: Peter Zijlstra <peterz@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 <ja@ssi.bg>


\
 
 \ /
  Last update: 2015-05-09 11:41    [W:0.068 / U:0.256 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site