lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 25 Aug 2020 15:41:49 -0300 From: Marcelo Tosatti <mtosatti@...hat.com> To: Frederic Weisbecker <frederic@...nel.org> Cc: linux-kernel@...r.kernel.org Subject: [patch 2/2] nohz: try to avoid IPI when setting tick dependency for task When enabling per-CPU posix timers, an IPI to nohz_full CPUs might be performed (to re-read the dependencies and possibly not re-enter nohz_full on a given CPU). A common case is for applications that run on nohz_full= CPUs to not use POSIX timers (eg DPDK). This patch optimizes tick_nohz_dep_set_task to avoid kicking all nohz_full= CPUs in case the task allowed mask does not intersect with nohz_full= CPU mask, when going through tick_nohz_dep_set_task. This reduces interruptions to nohz_full= CPUs. --- kernel/time/tick-sched.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) Index: linux-2.6/kernel/time/tick-sched.c =================================================================== --- linux-2.6.orig/kernel/time/tick-sched.c +++ linux-2.6/kernel/time/tick-sched.c @@ -383,11 +383,16 @@ void tick_nohz_dep_set_task(struct task_ tick_nohz_full_kick(); preempt_enable(); } else { + unsigned long flags; + /* * Some future tick_nohz_full_kick_task() - * should optimize this. + * should further optimize this. */ - tick_nohz_full_kick_all(); + raw_spin_lock_irqsave(&tsk->pi_lock, flags); + if (cpumask_intersects(&tsk->cpus_mask, tick_nohz_full_mask)) + tick_nohz_full_kick_all(); + raw_spin_unlock_irqrestore(&tsk->pi_lock, flags); } } }
Powered by blists - more mailing lists