The fact that kvdo requires tuning of threads explicitly seems to suggest (naive guess) that there may be alternate scheduling approaches that might work better:
-- co-operative scheduling algos for instance.
go coroutines etc also have some advantages for scheduling.
having a design in which multiple threads could be waiting on each other is inherent problematic. Have you considered a design which may not require explicit tuning of threads?
The fact that kvdo requires tuning of threads explicitly seems to suggest (naive guess) that there may be alternate scheduling approaches that might work better:
-- co-operative scheduling algos for instance.
go coroutines etc also have some advantages for scheduling.
having a design in which multiple threads could be waiting on each other is inherent problematic. Have you considered a design which may not require explicit tuning of threads?