On 04/12/20(Fri) 12:01, Jonathan Matthew wrote: > On Wed, Dec 02, 2020 at 11:41:04AM -0300, Martin Pieuchot wrote: > > [...] > > Could you try the diff below that only call smr_barrier() for multi- > > threaded processes with threads still in the list. I guess this also > > answers guenther@'s question. The same could be done with smr_flush(). > > This removes the overhead, more or less. Are we only looking at unlocking > access > to ps_threads from within a process (not the sysctl or ptrace stuff)? > Otherwise > this doesn't seem safe.
I'd argue that if `ps_thread' is being iterated the CPU doing the iteration must already have a reference to the "struct process" so the serialization should be done on this reference. Now I doubt we'll be able to answer all the questions right now. If we can find a path forward that doesn't decrease performances too much and allow us to move signal delivery and sleep out of the KERNEL_LOCK() that's a huge win.
