On Thu, Mar 11 2021 at 15:13, Eric W. Biederman wrote: > Thomas Gleixner <t...@linutronix.de> writes: > >> This is a follow up to the initial submission which can be found here: >> >> https://lore.kernel.org/r/20210303142025.wbbt2nnr6dtgw...@linutronix.de >> >> Signal sending requires a kmem cache allocation at the sender side and the >> receiver hands it back to the kmem cache when consuming the signal. >> >> This works pretty well even for realtime workloads except for the case when >> the kmem cache allocation has to go into the slow path which is rare but >> happens. >> >> Preempt-RT carries a patch which allows caching of one sigqueue object per >> task. The object is not preallocated. It's cached when the task receives a >> signal. The cache is freed when the task exits. > > I am probably skimming fast and missed your explanation but is there > a reason the caching is per task (aka thread) and not per signal_struct > (aka process)? > > My sense is most signal delivery is per process. Are realtime workloads > that extensively use pthread_sigqueue? The ordinary sigqueue interface > only allows targeting a process.
Unfortunately they use both. The majority is probably process based. Thanks, tglx