workqueue: Remove the cacheline_aligned for nr_running
authorLai Jiangshan <laijs@linux.alibaba.com>
Tue, 7 Dec 2021 07:35:42 +0000 (15:35 +0800)
committerTejun Heo <tj@kernel.org>
Thu, 9 Dec 2021 22:26:54 +0000 (12:26 -1000)
nr_running is never modified remotely after the schedule callback in
wakeup path is removed.

Rather nr_running is often accessed with other fields in the pool
together, so the cacheline_aligned for nr_running isn't needed.

Signed-off-by: Lai Jiangshan <laijs@linux.alibaba.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
kernel/workqueue.c

index 403387e..b583141 100644 (file)
@@ -154,6 +154,9 @@ struct worker_pool {
 
        unsigned long           watchdog_ts;    /* L: watchdog timestamp */
 
+       /* The current concurrency level. */
+       atomic_t                nr_running;
+
        struct list_head        worklist;       /* L: list of pending works */
 
        int                     nr_workers;     /* L: total number of workers */
@@ -178,18 +181,11 @@ struct worker_pool {
        int                     refcnt;         /* PL: refcnt for unbound pools */
 
        /*
-        * The current concurrency level.  As it's likely to be accessed
-        * from other CPUs during try_to_wake_up(), put it in a separate
-        * cacheline.
-        */
-       atomic_t                nr_running ____cacheline_aligned_in_smp;
-
-       /*
         * Destruction of pool is RCU protected to allow dereferences
         * from get_work_pool().
         */
        struct rcu_head         rcu;
-} ____cacheline_aligned_in_smp;
+};
 
 /*
  * The per-pool workqueue.  While queued, the lower WORK_STRUCT_FLAG_BITS