On Wed, 3 Apr 2024 at 17:43, Thomas Gleixner <tglx@xxxxxxxxxxxxx> wrote: > > On Wed, Apr 03 2024 at 17:03, Oleg Nesterov wrote: > > On 04/03, Thomas Gleixner wrote: > >> The test if fragile as hell as there is absolutely no guarantee that the > >> signal target distribution is as expected. The expectation is based on a > >> statistical assumption which does not really hold. > > > > Agreed. I too never liked this test-case. > > > > I forgot everything about this patch and test-case, I can't really read > > your patch right now (sorry), so I am sure I missed something, but > > > >> static void *distribution_thread(void *arg) > >> { > >> - while (__atomic_load_n(&remain, __ATOMIC_RELAXED)); > >> - return NULL; > >> + while (__atomic_load_n(&remain, __ATOMIC_RELAXED) && !done) { > >> + if (got_signal) > >> + usleep(10); > >> + } > >> + > >> + return (void *)got_signal; > >> } > > > > Why distribution_thread() can't simply exit if got_signal != 0 ? > > > > See https://lore.kernel.org/all/20230128195641.GA14906@xxxxxxxxxx/ > > Indeed. It's too obvious :) This test models the intended use-case that was the motivation for the change: We want to sample execution of a running multi-threaded program, it has multiple active threads (that don't exit), since all threads are running and consuming CPU, they all should get a signal eventually. If threads will exit once they get a signal, then the test will pass even if signal delivery is biased towards a single running thread all the time (the previous kernel impl).