Re: PROBLEM: Long Workqueue delays.

From: Alan Stern
Date: Mon Aug 17 2020 - 15:41:41 EST


On Mon, Aug 17, 2020 at 12:40:03PM +0100, Jim Baxter wrote:
> We have issues with the workqueue of the kernel overloading the CPU 0
> when we we disconnect a USB stick.

Do you unmount the stick before disconnecting it?

> This results in other items on the shared workqueue being delayed by
> around 6.5 seconds with a default kernel configuration and 2.3 seconds
> on a config tailored for our RCar embedded platform.
>
> I am aware there will be delays on the shared workqueue, are the delays
> we are seeing considered normal?

Assuming the workqueue delay is caused by the USB subsystem, you may be
able to get more information by turning on USB dynamic debugging:

echo 'module usbcore =p' >/sys/kernel/debug/dynamic_debug/control

and seeing what shows up in the dmesg log.

One long-running job should not normally be enough to delay an entire
workqueues. Workqueues are allowed to spawn multiple threads; they are
supposed to resize themselves dynamically as required.

Alan Stern