Linus kernel has a subsystem called workqueues. It provides pool of generic kernel threads (workers). They allow kernel to do some work asynchronously in the process context.
Workqueues try to find a reasonable balance between performance and resources. The queued work items are proceed in parallel when needed. But the same workers are re-used and different users that share pools of workers. The amount of workers is dynamically balanced according to the demand.
There is a special watchog that reports when any worker pool is not able to make a progress. The report provides a lot of information about what is being proceed and what is stuck. Unfortunately, it does not provide enough clues to find root of some problems.
Goal for this Hackweek
Improve the watchdog debugging. Report when it is fails to create new workers. Also show backtrace from workers that might cause the stall.
This project is one of its kind!