One can use high-priority(WQ_HIGH_PRI
), unbound(WQ_UNBOUND
) workqueues and stick with option3 listed in the question.
WQ_HIGH_PRI
guarantees that the processing is initiated ASAP. WQ_UNBOUND
eliminates the single-CPU bottleneck as the scheduler assigns the work to any available CPU immediately.