Re: [patch V2 0/3] signals: Allow caching one sigqueue object per task

From: Thomas Gleixner
Date: Fri Mar 12 2021 - 15:03:09 EST


On Thu, Mar 11 2021 at 15:13, Eric W. Biederman wrote:
> Thomas Gleixner <tglx@xxxxxxxxxxxxx> writes:
>
>> This is a follow up to the initial submission which can be found here:
>>
>> https://lore.kernel.org/r/20210303142025.wbbt2nnr6dtgwjfi@xxxxxxxxxxxxx
>>
>> 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