sched/nohz: Update idle load-balancing (ILB) comments
authorIngo Molnar <mingo@kernel.org>
Fri, 6 Oct 2023 10:25:16 +0000 (12:25 +0200)
committerIngo Molnar <mingo@kernel.org>
Mon, 9 Oct 2023 10:21:23 +0000 (12:21 +0200)
 - Fix incorrect/misleading comments,

 - clarify some others,

 - fix typos & grammar,

 - and use more consistent style throughout.

Signed-off-by: Ingo Molnar <mingo@kernel.org>
Reviewed-by: Joel Fernandes (Google) <joel@joelfernandes.org>
Link: https://lore.kernel.org/r/20231006102518.2452758-2-mingo@kernel.org
kernel/sched/fair.c

index 52c498fd6c46cc2831d0b790b34512ae24f64ea0..2b63a14cd05ec885d815f39591118e78b5f7a8f0 100644 (file)
@@ -11503,14 +11503,15 @@ static inline int on_null_domain(struct rq *rq)
 
 #ifdef CONFIG_NO_HZ_COMMON
 /*
- * idle load balancing details
- * - When one of the busy CPUs notice that there may be an idle rebalancing
+ * NOHZ idle load balancing (ILB) details:
+ *
+ * - When one of the busy CPUs notices that there may be an idle rebalancing
  *   needed, they will kick the idle load balancer, which then does idle
  *   load balancing for all the idle CPUs.
- * - HK_TYPE_MISC CPUs are used for this task, because HK_TYPE_SCHED not set
+ *
+ * - HK_TYPE_MISC CPUs are used for this task, because HK_TYPE_SCHED is not set
  *   anywhere yet.
  */
-
 static inline int find_new_ilb(void)
 {
        int ilb;
@@ -11531,8 +11532,10 @@ static inline int find_new_ilb(void)
 }
 
 /*
- * Kick a CPU to do the nohz balancing, if it is time for it. We pick any
- * idle CPU in the HK_TYPE_MISC housekeeping set (if there is one).
+ * Kick a CPU to do the NOHZ balancing, if it is time for it, via a cross-CPU
+ * SMP function call (IPI).
+ *
+ * We pick the first idle CPU in the HK_TYPE_MISC housekeeping set (if there is one).
  */
 static void kick_ilb(unsigned int flags)
 {
@@ -11560,7 +11563,7 @@ static void kick_ilb(unsigned int flags)
 
        /*
         * This way we generate an IPI on the target CPU which
-        * is idle. And the softirq performing nohz idle load balance
+        * is idle, and the softirq performing NOHZ idle load balancing
         * will be run before returning from the IPI.
         */
        smp_call_function_single_async(ilb_cpu, &cpu_rq(ilb_cpu)->nohz_csd);
@@ -11589,7 +11592,7 @@ static void nohz_balancer_kick(struct rq *rq)
 
        /*
         * None are in tickless mode and hence no need for NOHZ idle load
-        * balancing.
+        * balancing:
         */
        if (likely(!atomic_read(&nohz.nr_cpus)))
                return;
@@ -11611,9 +11614,8 @@ static void nohz_balancer_kick(struct rq *rq)
        sd = rcu_dereference(rq->sd);
        if (sd) {
                /*
-                * If there's a CFS task and the current CPU has reduced
-                * capacity; kick the ILB to see if there's a better CPU to run
-                * on.
+                * If there's a runnable CFS task and the current CPU has reduced
+                * capacity, kick the ILB to see if there's a better CPU to run on:
                 */
                if (rq->cfs.h_nr_running >= 1 && check_cpu_capacity(rq, sd)) {
                        flags = NOHZ_STATS_KICK | NOHZ_BALANCE_KICK;
@@ -11665,11 +11667,11 @@ static void nohz_balancer_kick(struct rq *rq)
        if (sds) {
                /*
                 * If there is an imbalance between LLC domains (IOW we could
-                * increase the overall cache use), we need some less-loaded LLC
-                * domain to pull some load. Likewise, we may need to spread
+                * increase the overall cache utilization), we need a less-loaded LLC
+                * domain to pull some load from. Likewise, we may need to spread
                 * load within the current LLC domain (e.g. packed SMT cores but
                 * other CPUs are idle). We can't really know from here how busy
-                * the others are - so just get a nohz balance going if it looks
+                * the others are - so just get a NOHZ balance going if it looks
                 * like this LLC domain has tasks we could move.
                 */
                nr_busy = atomic_read(&sds->nr_busy_cpus);