On 12.07.2014 00:33, Tim Chen wrote: > This function will help a thread decide if it wants to to do work > that can be delayed, to accumulate more tasks for more efficient > batch processing later. > > However, if no other tasks are running on the cpu, it can take > advantgae of the available cpu cycles to complete the tasks > for immediate processing to minimize delay, otherwise it will yield. > > Signed-off-by: Tim Chen <tim.c.chen@xxxxxxxxxxxxxxx> > --- > include/linux/sched.h | 1 + > kernel/sched/core.c | 8 ++++++++ > 2 files changed, 9 insertions(+) > > diff --git a/include/linux/sched.h b/include/linux/sched.h > index 7cb07fd..0884250 100644 > --- a/include/linux/sched.h > +++ b/include/linux/sched.h > @@ -168,6 +168,7 @@ extern int nr_threads; > DECLARE_PER_CPU(unsigned long, process_counts); > extern int nr_processes(void); > extern unsigned long nr_running(void); > +extern unsigned long nr_running_cpu(int cpu); > extern unsigned long nr_iowait(void); > extern unsigned long nr_iowait_cpu(int cpu); > extern unsigned long this_cpu_load(void); > diff --git a/kernel/sched/core.c b/kernel/sched/core.c > index 9cae286..d5bb8e6 100644 > --- a/kernel/sched/core.c > +++ b/kernel/sched/core.c > @@ -2283,6 +2283,14 @@ unsigned long nr_running(void) > return sum; > } > > +unsigned long nr_running_cpu(int cpu) > +{ > + if (cpumask_test_cpu(cpu, cpu_online_mask)) > + return cpu_rq(cpu)->nr_running; > + else > + return 0; > +} > + Offline cpu should have nr_running equal to 0. We park last enqueued thread (migration_thread) at the end of take_cpu_down(). So, it's enough to return cpu_rq(cpu)->nr_running. > unsigned long long nr_context_switches(void) > { > int i; > Thanks, Kirill -- To unsubscribe from this list: send the line "unsubscribe linux-crypto" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html