* [RFC PATCH net-next 2/5] net: ti: icssg-stats: Move long delayed work on system_dfl_long_wq [not found] <20260511092846.120141-1-marco.crivellari@suse.com> @ 2026-05-11 9:28 ` Marco Crivellari 2026-05-11 10:14 ` Richard Cheng 0 siblings, 1 reply; 2+ messages in thread From: Marco Crivellari @ 2026-05-11 9:28 UTC (permalink / raw) To: linux-kernel, netdev Cc: Tejun Heo, Lai Jiangshan, Frederic Weisbecker, Sebastian Andrzej Siewior, Marco Crivellari, Michal Hocko, Andrew Lunn, David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, MD Danish Anwar, Roger Quadros, linux-arm-kernel Currently the code enqueue work items using {queue|mod}_delayed_work(), using system_long_wq. This workqueue should be used when long works are expected and it is a per-cpu workqueue. The function(s) end up calling __queue_delayed_work(), which set a global timer that could fire anywhere, enqueuing the work where the timer fired. Unbound works could benefit from scheduler task placement, to optimize performance and power consumption. Long work shouldn't stick to a single CPU. Recently, a new unbound workqueue specific for long running work has been added: c116737e972e ("workqueue: Add system_dfl_long_wq for long unbound works") Since the workqueue work doesn't rely on per-cpu variables, there is no obvious reason that justify the use of a per-cpu workqueue. So change system_long_wq with system_dfl_long_wq so that the work may benefit from scheduler task placement. Cc: MD Danish Anwar <danishanwar@ti.com> Cc: Roger Quadros <rogerq@kernel.org> Cc: linux-arm-kernel@lists.infradead.org Signed-off-by: Marco Crivellari <marco.crivellari@suse.com> --- drivers/net/ethernet/ti/icssg/icssg_stats.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/ti/icssg/icssg_stats.c b/drivers/net/ethernet/ti/icssg/icssg_stats.c index 7159baa0155c..7d6d6692d819 100644 --- a/drivers/net/ethernet/ti/icssg/icssg_stats.c +++ b/drivers/net/ethernet/ti/icssg/icssg_stats.c @@ -69,7 +69,7 @@ void icssg_stats_work_handler(struct work_struct *work) stats_work.work); emac_update_hardware_stats(emac); - queue_delayed_work(system_long_wq, &emac->stats_work, + queue_delayed_work(system_dfl_long_wq, &emac->stats_work, msecs_to_jiffies((STATS_TIME_LIMIT_1G_MS * 1000) / emac->speed)); } EXPORT_SYMBOL_GPL(icssg_stats_work_handler); -- 2.54.0 ^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [RFC PATCH net-next 2/5] net: ti: icssg-stats: Move long delayed work on system_dfl_long_wq 2026-05-11 9:28 ` [RFC PATCH net-next 2/5] net: ti: icssg-stats: Move long delayed work on system_dfl_long_wq Marco Crivellari @ 2026-05-11 10:14 ` Richard Cheng 0 siblings, 0 replies; 2+ messages in thread From: Richard Cheng @ 2026-05-11 10:14 UTC (permalink / raw) To: Marco Crivellari Cc: linux-kernel, netdev, Tejun Heo, Lai Jiangshan, Frederic Weisbecker, Sebastian Andrzej Siewior, Michal Hocko, Andrew Lunn, David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, MD Danish Anwar, Roger Quadros, linux-arm-kernel On Mon, May 11, 2026 at 11:28:37AM +0800, Marco Crivellari wrote: > Currently the code enqueue work items using {queue|mod}_delayed_work(), > using system_long_wq. This workqueue should be used when long works are > expected and it is a per-cpu workqueue. > > The function(s) end up calling __queue_delayed_work(), which set a global > timer that could fire anywhere, enqueuing the work where the timer fired. > > Unbound works could benefit from scheduler task placement, to optimize > performance and power consumption. Long work shouldn't stick to a single > CPU. > > Recently, a new unbound workqueue specific for long running work has > been added: > > c116737e972e ("workqueue: Add system_dfl_long_wq for long unbound works") > > Since the workqueue work doesn't rely on per-cpu variables, there is no > obvious reason that justify the use of a per-cpu workqueue. So change > system_long_wq with system_dfl_long_wq so that the work may benefit from > scheduler task placement. > > Cc: MD Danish Anwar <danishanwar@ti.com> > Cc: Roger Quadros <rogerq@kernel.org> > Cc: linux-arm-kernel@lists.infradead.org > Signed-off-by: Marco Crivellari <marco.crivellari@suse.com> > --- > drivers/net/ethernet/ti/icssg/icssg_stats.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/ti/icssg/icssg_stats.c b/drivers/net/ethernet/ti/icssg/icssg_stats.c > index 7159baa0155c..7d6d6692d819 100644 > --- a/drivers/net/ethernet/ti/icssg/icssg_stats.c > +++ b/drivers/net/ethernet/ti/icssg/icssg_stats.c > @@ -69,7 +69,7 @@ void icssg_stats_work_handler(struct work_struct *work) > stats_work.work); > emac_update_hardware_stats(emac); > > - queue_delayed_work(system_long_wq, &emac->stats_work, > + queue_delayed_work(system_dfl_long_wq, &emac->stats_work, > msecs_to_jiffies((STATS_TIME_LIMIT_1G_MS * 1000) / emac->speed)); > } > EXPORT_SYMBOL_GPL(icssg_stats_work_handler); > -- > 2.54.0 > > LGTM, Reviewed-by: Richard Cheng <icheng@nvidia.com> Best regards, Richard Cheng. ^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-05-11 10:14 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20260511092846.120141-1-marco.crivellari@suse.com>
2026-05-11 9:28 ` [RFC PATCH net-next 2/5] net: ti: icssg-stats: Move long delayed work on system_dfl_long_wq Marco Crivellari
2026-05-11 10:14 ` Richard Cheng
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox