linux/kernel
Thomas Gleixner 1d1230719a sched: Distangle worker accounting from rqlock
The worker accounting for cpu bound workers is plugged into the core
scheduler code and the wakeup code. This is not a hard requirement and
can be avoided by keeping track of the state in the workqueue code
itself.

Keep track of the sleeping state in the worker itself and call the
notifier before entering the core scheduler. There might be false
positives when the task is woken between that call and actually
scheduling, but that's not really different from scheduling and being
woken immediately after switching away. There is also no harm from
updating nr_running when the task returns from scheduling instead of
accounting it in the wakeup code.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Tejun Heo <tj@kernel.org>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: http://lkml.kernel.org/r/20110622174919.135236139@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2020-10-14 00:59:19 +03:00
..
cpu sched/preempt: Fix up missed PREEMPT_NEED_RESCHED folding 2014-01-13 17:38:55 +01:00
debug kdb: fix incorrect counts in KDB summary command output 2015-03-06 14:43:30 -08:00
events perf: Fix irq_work 'tail' recursion 2015-04-13 14:03:01 +02:00
gcov gcov: reuse kbasename helper 2013-11-13 12:09:34 +09:00
irq genirq: Allow disabling of softirq processing in irq thread context 2020-10-14 00:59:16 +03:00
locking stomp-machine: create lg_global_trylock_relax() primitive 2020-10-14 00:59:18 +03:00
power suspend: Prevent might sleep splats 2020-10-14 00:59:09 +03:00
printk printk: 'force_early_printk' boot param to help with debugging 2020-10-14 00:59:10 +03:00
rcu rcutree/rcu_bh_qs: disable irq while calling rcu_preempt_qs() 2020-10-14 00:59:17 +03:00
sched sched: Distangle worker accounting from rqlock 2020-10-14 00:59:19 +03:00
time softirq: Sanitize softirq pending for NOHZ/RT 2020-10-14 00:59:15 +03:00
trace tracing: use migrate_disable() to prevent beeing pushed off the cpu 2020-10-14 00:59:15 +03:00
.gitignore Ignore generated file kernel/x509_certificate_list 2013-12-10 18:21:34 +00:00
Kconfig.freezer
Kconfig.hz kernel: remove CONFIG_USE_GENERIC_SMP_HELPERS 2013-11-15 09:32:22 +09:00
Kconfig.locks mutex-no-spin-on-rt.patch 2020-10-14 00:59:15 +03:00
Kconfig.preempt kconfig-preempt-rt-full.patch 2020-10-14 00:59:10 +03:00
Makefile KEYS: Remove files generated when SYSTEM_TRUSTED_KEYRING=y 2013-12-13 15:59:11 +00:00
acct.c fs: Fix hang with BSD accounting on frozen filesystem 2013-05-04 14:57:58 -04:00
async.c async: rename and redefine async_func_ptr 2013-03-12 13:59:14 -07:00
audit.c audit: AUDIT_FEATURE_CHANGE message format missing delimiting space 2014-11-21 09:23:01 -08:00
audit.h audit: Use struct net not pid_t to remember the network namespce to reply in 2014-02-28 04:04:33 -08:00
audit_tree.c audit: keep inode pinned 2014-11-21 09:23:01 -08:00
audit_watch.c inotify: Fix reporting of cookies for inotify events 2014-02-18 11:17:17 +01:00
auditfilter.c audit: restore AUDIT_LOGINUID unset ABI 2015-01-08 10:00:50 -08:00
auditsc.c audit: remove superfluous new- prefix in AUDIT_LOGIN messages 2014-07-09 11:18:28 -07:00
backtracetest.c
bounds.c mm: do not allocate page->ptl dynamically, if spinlock_t fits to long 2013-12-20 12:25:45 -08:00
capability.c CAPABILITIES: remove undefined caps from all processes 2014-09-17 09:19:09 -07:00
cgroup.c move d_rcu from overlapping d_child to overlapping d_alias 2015-04-29 10:31:54 +02:00
cgroup_freezer.c cgroup: replace cftype->read_seq_string() with cftype->seq_show() 2013-12-05 12:28:04 -05:00
compat.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal 2013-05-01 07:21:43 -07:00
configs.c proc: Supply PDE attribute setting accessor functions 2013-05-01 17:29:18 -04:00
context_tracking.c context_tracking: Wrap static key check into more intuitive function name 2013-12-02 20:43:14 +01:00
cpu.c hotplug-use-migrate-disable.patch 2020-10-14 00:59:14 +03:00
cpu_pm.c
cpuset.c cpuset: Fix cpuset sched_relax_domain_level 2015-03-26 15:06:54 +01:00
crash_dump.c
cred.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace 2012-12-18 10:55:28 -08:00
delayacct.c kernel/delayacct.c: remove redundant checking in __delayacct_add_tsk() 2013-11-13 12:09:12 +09:00
dma.c
elfcore.c switch elf_core_write_extra_phdrs() to dump_emit() 2013-11-09 00:16:23 -05:00
exec_domain.c
exit.c signals: Allow rt tasks to cache one sigqueue struct 2020-10-14 00:59:08 +03:00
extable.c kernel/extable: fix address-checks for core_kernel and init areas 2013-11-28 09:49:41 -08:00
fork.c rwlocks: Fix section mismatch 2020-10-14 00:59:17 +03:00
freezer.c freezer: Do not freeze tasks killed by OOM killer 2014-11-14 09:00:01 -08:00
futex.c rt-mutex-add-sleeping-spinlocks-support.patch 2020-10-14 00:59:16 +03:00
futex_compat.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal 2013-02-23 18:50:11 -08:00
groups.c userns: Don't allow setgroups until a gid mapping has been setablished 2015-01-08 10:00:50 -08:00
hrtimer.c cpu_chill: Add a UNINTERRUPTIBLE hrtimer_nanosleep 2020-10-14 00:59:19 +03:00
hung_task.c hung_task: Display every hung task warning 2014-01-25 12:13:33 +01:00
irq_work.c Merge branch 'nohz/printk-v8' into irq/core 2013-02-05 00:48:46 +01:00
itimer.c hrtimers: prepare full preemption 2020-10-14 00:59:13 +03:00
jump_label.c static_key: WARN on usage before jump_label_init was called 2013-10-19 19:45:35 -04:00
kallsyms.c kernel: kallsyms: memory override issue, need check destination buffer length 2013-04-15 15:17:26 +09:30
kcmp.c kcmp: fix standard comparison bug 2014-10-05 14:52:20 -07:00
kexec.c powerpc, kexec: Fix "Processor X is stuck" issue during kexec from ST mode 2014-06-07 10:28:28 -07:00
kmod.c execve: use 'struct filename *' for executable name passing 2014-02-05 12:54:53 -08:00
kprobes.c kprobes: use KSYM_NAME_LEN to size identifier buffers 2013-11-13 12:09:26 +09:00
ksysfs.c kdump: fix exported size of vmcoreinfo note 2014-01-23 16:37:03 -08:00
kthread.c kthread: fix return value of kthread_create() upon SIGKILL. 2014-06-30 20:11:53 -07:00
latencytop.c
module-internal.h KEYS: Separate the kernel signature checking keyring from module signing 2013-09-25 17:17:01 +01:00
module.c modules, lock around setting of MODULE_STATE_UNFORMED 2014-11-14 08:59:52 -08:00
module_signing.c keys: change asymmetric keys to use common hash definitions 2013-10-25 17:15:18 -04:00
notifier.c
nsproxy.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace 2013-09-07 14:35:32 -07:00
padata.c padata: Fix wrong usage of rcu_dereference() 2013-12-05 21:28:42 +08:00
panic.c panic: skip get_random_bytes for RT_FULL in init_oops_id 2020-10-14 00:59:13 +03:00
params.c params: improve standard definitions 2013-12-04 14:09:46 +10:30
pid.c exit: pidns: alloc_pid() leaks pid_namespace if child_reaper is exiting 2015-01-08 10:00:50 -08:00
pid_namespace.c pid_namespace: pidns_get() should check task_active_pid_ns() != NULL 2014-04-26 17:19:04 -07:00
posix-cpu-timers.c posix-timers: Avoid wakeups when no timers are active 2020-10-14 00:59:13 +03:00
posix-timers.c hrtimers: prepare full preemption 2020-10-14 00:59:13 +03:00
profile.c mm: fix GFP_THISNODE callers and clarify 2014-03-10 17:26:19 -07:00
ptrace.c ptrace: fix ptrace vs tasklist_lock race 2020-10-14 00:59:08 +03:00
range.c range: Do not add new blank slot with add_range_with_merge 2013-06-18 11:32:10 -05:00
reboot.c kexec: migrate to reboot cpu 2013-12-18 19:04:50 -08:00
relay.c relay: fix timer madness 2020-10-14 00:59:13 +03:00
res_counter.c core: Do not disable interrupts on RT in res_counter.c 2020-10-14 00:59:11 +03:00
resource.c kernel/resource.c: remove the unneeded assignment in function __find_resource 2013-07-03 16:08:06 -07:00
seccomp.c seccomp: allow BPF_XOR based ALU instructions. 2013-03-26 11:07:19 +11:00
signal.c signal-fix-up-rcu-wreckage.patch 2020-10-14 00:59:11 +03:00
smp.c kernel/smp.c:on_each_cpu_cond(): fix warning in fallback path 2014-09-17 09:19:09 -07:00
smpboot.c smpboot: Add missing get_online_cpus() in smpboot_register_percpu_thread() 2015-02-11 14:54:49 +08:00
smpboot.h smpboot: Provide infrastructure for percpu hotplug threads 2012-08-13 17:01:07 +02:00
softirq.c rcu: Make ksoftirqd do RCU quiescent states 2020-10-14 00:59:17 +03:00
stacktrace.c
stop_machine.c stomp-machine: use lg_global_trylock_relax() to dead with stop_cpus_lock lglock 2020-10-14 00:59:18 +03:00
sys.c kernel/sys.c: k_getrusage() can use while_each_thread() 2014-01-23 16:37:02 -08:00
sys_ni.c unify compat fanotify_mark(2), switch to COMPAT_SYSCALL_DEFINE 2013-05-09 13:46:38 -04:00
sysctl.c mm, pcp: allow restoring percpu_pagelist_fraction default 2014-07-09 11:18:26 -07:00
sysctl_binary.c kernel/sysctl_binary.c: use scnprintf() instead of snprintf() 2013-11-13 12:09:33 +09:00
system_certificates.S KEYS: correct alignment of system_certificate_list content in assembly file 2013-12-10 18:25:28 +00:00
system_keyring.c KEYS: correct alignment of system_certificate_list content in assembly file 2013-12-10 18:25:28 +00:00
task_work.c task_work: documentation 2013-09-11 15:58:27 -07:00
taskstats.c genetlink: only pass array to genl_register_family_with_ops() 2013-11-19 16:39:05 -05:00
test_kprobes.c kernel/: rename random32() to prandom_u32() 2013-04-29 18:28:42 -07:00
time.c time: settimeofday: Validate the values of tv from user 2015-01-29 17:40:49 -08:00
timeconst.bc kernel: Replace timeconst.pl with a bc script 2013-02-16 23:17:25 +01:00
timer.c timer: do not spin_trylock() on UP 2020-10-14 00:59:17 +03:00
tracepoint.c tracepoint: Do not waste memory on mods with no tracepoints 2014-05-31 13:20:28 -07:00
tsacct.c cputime: Use accessors to read task cputime stats 2013-01-27 19:23:31 +01:00
uid16.c groups: Consolidate the setgroups permission checks 2015-01-08 10:00:49 -08:00
up.c kernel: provide a __smp_call_function_single stub for !CONFIG_SMP 2013-11-15 09:32:22 +09:00
user-return-notifier.c hlist: drop the node parameter from iterators 2013-02-27 19:10:24 -08:00
user.c core: Do not disable interrupts on RT in kernel/users.c 2020-10-14 00:59:11 +03:00
user_namespace.c userns: Allow setting gid_maps without privilege when setgroups is disabled 2015-01-08 10:00:50 -08:00
utsname.c userns: Kill nsown_capable it makes the wrong thing easy 2013-08-30 23:44:11 -07:00
utsname_sysctl.c kernel/utsname_sysctl.c: put get/get_uts() into CONFIG_PROC_SYSCTL code block 2013-02-27 19:10:22 -08:00
watchdog.c hrtimer: fixup hrtimer callback changes for preempt-rt 2020-10-14 00:59:13 +03:00
workqueue.c sched: Distangle worker accounting from rqlock 2020-10-14 00:59:19 +03:00
workqueue_internal.h sched: Distangle worker accounting from rqlock 2020-10-14 00:59:19 +03:00