Hey -

I think the ideas Daniel brings up here are interesting -- specifically the 
notion that a thread could set a "pre-sleep wish" to signal it's sleeping. As 
this conversation shows I think there's a fair bit of depth to that. For 
example, the FUTEX_LOCK is an alternative approach. Another idea might be using 
the "currently running cpu" area of rseq to tell if the process in question was 
sleeping (assuming that the kernel would be modified to set this to -1 every 
time a process was unscheduled)

The idea discussed here seems orthogonal to the core thesis of rseq. I'm 
wondering if we can focus on getting rseq in, maybe with a eye for making sure 
this use case could be handled long term. My sense is that this is possible. We 
could use the flags setting in the per-thread rseq area, or maybe extend the 
meaning of the structure rseq_cs points to to signal that there was information 
about how to signal the sleeping of the current process. It seems to me this 
would be a natural way to add the functionality Daniel talks about if desired 
in the future.

Daniel - do you think there's anything we should do in the patch set today that 
would make it easier to implement your idea in the future without expanding the 
scope of the patch today. i.e. is there anything else we need to do to lay the 
framework for your idea.

I'd really love to see us get this patch in. There's a whole host of primitives 
this unlocks (more efficient RCU, better malloc implementations, fast 
reader-writer locks). I'm sure we'll have more ideas about APIs to provide once 
we've explored these use cases, but to me this patch is the MVP we need to ship 
to get that feedback. It's a solid framework that we can build upon, eg with 
the "opv" syscall or the idea in this thread if user feedback shows those 
things are necessary.

-b

Reply via email to