lkml.org 
[lkml]   [2019]   [Dec]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [RFC PATCH 3/8] perf: Init/fini PMU specific data
From
Date

On 02.12.2019 19:43, Peter Zijlstra wrote:
> On Mon, Dec 02, 2019 at 07:38:00PM +0300, Alexey Budankov wrote:
>>
>> On 02.12.2019 17:59, Andi Kleen wrote:
>>>>
>>>> This is atricous crap. Also it is completely broken for -RT.
>>>
>>> Well can you please suggest how you would implement it instead?
>>
>> FWIW,
>> An alternative could probably be to make task_ctx_data allocations
>> on the nearest context switch in, and obvious drawback is slowdown on
>> this critical path, but it could be amortized by static branches.
>
> Context switch is under a raw_spinlock_t too.

Indeed, under rq->lock (some of runqueue locks, I suppose), but
as far locking order is not violated a thread shouldn't deadlock.
On the other side it could probably hurt concurrency and
it is more preferable to have task_ctx_data memory pre-allocated
by the time it is assigned on a context switch in.

What if we would create some pool of preallocated task_ctx_data
objects on the first system wide perf_event_open() syscall
and after that:
- already existing threads would take task_ctx_data objects from
the pool without additional locking on the nearest
context switch in;
- newly created threads would allocate task_ctx_data themselves,
atomically checking some global state, possibly at PMU object
- task_ctx_data deallocation would be performed by threads
themselves, at some safe points in time;

Thanks,
Alexey

\
 
 \ /
  Last update: 2019-12-02 18:43    [W:0.040 / U:11.500 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site