Re: [PATCH v2] workqueue: Control intensive warning threshold through cmdline

From: Tejun Heo
Date: Thu Feb 22 2024 - 12:52:23 EST


On Thu, Feb 22, 2024 at 03:28:08PM +0800, Xuewen Yan wrote:
> When CONFIG_WQ_CPU_INTENSIVE_REPORT is set, the kernel will report
> the work functions which violate the intensive_threshold_us repeatedly.
> And now, only when the violate times exceed 4 and is a power of 2,
> the kernel warning could be triggered.
>
> However, sometimes, even if a long work execution time occurs only once,
> it may cause other work to be delayed for a long time. This may also
> cause some problems sometimes.
>
> In order to freely control the threshold of warninging, a boot argument
> is added so that the user can control the warning threshold to be printed.
> At the same time, keep the exponential backoff to prevent reporting too much.
>
> By default, the warning threshold is 4.
>
> Signed-off-by: Xuewen Yan <xuewen.yan@xxxxxxxxxx>

Applied to wq/for-6.9 with the following edit:

> + workqueue.cpu_intensive_warning_thresh=<uint>
> + If CONFIG_WQ_CPU_INTENSIVE_REPORT is set, the kernel
> + will report the work functions which violate the
> + intensive_threshold_us repeatedly. In order to prevent
> + the kernel log from being printed too frequently,
> + control the frequency and the threshold.
> +
> + By Default, the threshold is 4 times, and the warning
> + is limited by powers of 2. On the other hand, 0 will
> + disable the warning.

I changed this to:

If CONFIG_WQ_CPU_INTENSIVE_REPORT is set, the kernel
will report the work functions which violate the
intensive_threshold_us repeatedly. In order to prevent
spurious warnings, start printing only after a work
function has violated this threshold number of times.

The default is 4 times. 0 disables the warning.

Thanks.

--
tejun