posix-cpu-timers: Force next_expiration recalc after timer deletion
authorFrederic Weisbecker <frederic@kernel.org>
Mon, 26 Jul 2021 12:55:09 +0000 (14:55 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Tue, 10 Aug 2021 15:09:59 +0000 (17:09 +0200)
commit175cc3ab28e3509ddee8de4f164b563d99daa570
treefc28cebc76fb649e06eee2f55f15a2c9a9ce36f9
parenta5dec9f82ab2ae486119f0b0820ea16db3e522c3
posix-cpu-timers: Force next_expiration recalc after timer deletion

A timer deletion only dequeues the timer but it doesn't shutdown
the related costly process wide cputimer counter and the tick dependency.

The following code snippet keeps this overhead around for one week after
the timer deletion:

void trigger_process_counter(void)
{
timer_t id;
struct itimerspec val = { };

val.it_value.tv_sec = 604800;
timer_create(CLOCK_PROCESS_CPUTIME_ID, NULL, &id);
timer_settime(id, 0, &val, NULL);
timer_delete(id);
}

Make sure the next target's tick recalculates the nearest expiration and
clears the process wide counter and tick dependency if necessary.

Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/20210726125513.271824-3-frederic@kernel.org
include/linux/posix-timers.h
kernel/time/posix-cpu-timers.c