To speed cpu down processing up, use system_highpri_wq. As scheduling priority of workers on it is higher than system_wq and it is not contended by other normal works on this cpu, work on it is processed faster than system_wq. tj: CPU up/downs care quite a bit about latency these days. This shouldn't hurt anything and makes sense.
Showing the changes to kernel/workqueue.c (1 of 1 file). Show all
Unified · Split
| @@ -3680,7 +3680,7 @@ static int __devinit workqueue_cpu_down_callback(struct notifier_block *nfb, · 3679 unmodified lines | ||
| 3680 | 3680 | case CPU_DOWN_PREPARE: |
| 3681 | 3681 | /* unbinding should happen on the local CPU */ |
| 3682 | 3682 | INIT_WORK_ONSTACK(&unbind_work, gcwq_unbind_fn); |
| 3683 | − schedule_work_on(cpu, &unbind_work); | |
| 3683 | + queue_work_on(cpu, system_highpri_wq, &unbind_work); | |
| 3684 | 3684 | flush_work(&unbind_work); |
| 3685 | 3685 | break; |
| 3686 | 3686 | } |