All of lore.kernel.org
 help / color / mirror / Atom feed
From: Shrikanth Hegde <sshegde@linux.ibm.com>
To: Yury Norov <ynorov@nvidia.com>
Cc: linux-kernel@vger.kernel.org, mingo@kernel.org,
	peterz@infradead.org, juri.lelli@redhat.com,
	vincent.guittot@linaro.org, yury.norov@gmail.com,
	kprateek.nayak@amd.com, iii@linux.ibm.com, corbet@lwn.net,
	tglx@kernel.org, gregkh@linuxfoundation.org, pbonzini@redhat.com,
	seanjc@google.com, vschneid@redhat.com, huschle@linux.ibm.com,
	rostedt@goodmis.org, dietmar.eggemann@arm.com,
	maddy@linux.ibm.com, srikar@linux.ibm.com, hdanton@sina.com,
	chleroy@kernel.org, vineeth@bitbyteword.org, frederic@kernel.org,
	arighi@nvidia.com, pauld@redhat.com, christian.loehle@arm.com,
	tj@kernel.org, tommaso.cucinotta@gmail.com, maz@kernel.org,
	rafael@kernel.org, rdunlap@infradead.org, kernellwp@gmail.com,
	linux-doc@vger.kernel.org, jgross@suse.com,
	virtualization@lists.linux.dev
Subject: Re: [PATCH v9 10/11] virt/steal_governor: Implement steal_governor policy loop
Date: Mon, 27 Jul 2026 20:12:44 +0530	[thread overview]
Message-ID: <d3533cdb-d32a-4d75-84d5-a2908ecc7bfa@linux.ibm.com> (raw)
In-Reply-To: <amPTg78qsOw4WpqB@yury>

Hi Yury,

On 7/25/26 2:35 AM, Yury Norov wrote:

> 
> In v8 I pointed to the identical function in s390 code, and you agreed
> to unify them, but that didn't happen. Please do that in the next
> version.
> 

This is diff i have now. I assume this is what you had suggested.
Let me know if it differs.
  

commit b3aa88b7207c7a23ef9d60dd12f02eb4f4d79abf (HEAD -> sched/core)
Author: Shrikanth Hegde <sshegde@linux.ibm.com>
Date:   Mon Jul 27 09:11:08 2026 -0400

     refactor for kcpustat_field_total

diff --git a/arch/s390/kernel/hiperdispatch.c b/arch/s390/kernel/hiperdispatch.c
index 217206522266..0c658f229b17 100644
--- a/arch/s390/kernel/hiperdispatch.c
+++ b/arch/s390/kernel/hiperdispatch.c
@@ -210,13 +210,10 @@ static unsigned long hd_calculate_steal_percentage(void)
         int cpus, cpu;
         ktime_t now;
  
-       cpus = 0;
-       steal = 0;
         percentage = 0;
-       for_each_cpu(cpu, &hd_vmvl_cpumask) {
-               steal += kcpustat_cpu(cpu).cpustat[CPUTIME_STEAL];
-               cpus++;
-       }
+       steal = kcpustat_field_total(CPUTIME_STEAL, &hd_vmvl_cpumask);
+       cpus = cpumask_weight(&hd_vmvl_cpumask);
+
         /*
          * If there is no vertical medium and low CPUs steal time
          * is 0 as vertical high CPUs shouldn't experience steal time.
diff --git a/drivers/virt/steal_governor.c b/drivers/virt/steal_governor.c
index 715aa7f90407..1f0c377c739a 100644
--- a/drivers/virt/steal_governor.c
+++ b/drivers/virt/steal_governor.c
@@ -116,13 +116,7 @@ MODULE_PARM_DESC(low_threshold,
  /* Return collective steal time across system. */
  static u64 get_system_steal_time(void)
  {
-       int cpu;
-       u64 total_steal = 0;
-
-       for_each_possible_cpu(cpu)
-               total_steal += kcpustat_cpu(cpu).cpustat[CPUTIME_STEAL];
-
-       return total_steal;
+       return kcpustat_field_total(CPUTIME_STEAL, cpu_possible_mask);
  }
  
  /* Return number of CPUs to consider steal ratio. */
diff --git a/fs/proc/uptime.c b/fs/proc/uptime.c
index 433aa947cd57..53143c66cbe1 100644
--- a/fs/proc/uptime.c
+++ b/fs/proc/uptime.c
@@ -15,12 +15,8 @@ static int uptime_proc_show(struct seq_file *m, void *v)
         struct timespec64 idle;
         u64 idle_nsec;
         u32 rem;
-       int i;
-
-       idle_nsec = 0;
-       for_each_possible_cpu(i)
-               idle_nsec += kcpustat_field(CPUTIME_IDLE, i);
  
+       idle_nsec = kcpustat_field_total(CPUTIME_IDLE, cpu_possible_mask);
         ktime_get_boottime_ts64(&uptime);
         timens_add_boottime(&uptime);
  
diff --git a/include/linux/kernel_stat.h b/include/linux/kernel_stat.h
index 9ca6c2259dfe..c1e85550bf12 100644
--- a/include/linux/kernel_stat.h
+++ b/include/linux/kernel_stat.h
@@ -196,6 +196,17 @@ static inline void kcpustat_cpu_fetch(struct kernel_cpustat *dst, int cpu)
  }
  #endif /* !CONFIG_VIRT_CPU_ACCOUNTING_GEN */
  
+static inline u64 kcpustat_field_total(enum cpu_usage_stat usage, const struct cpumask *cpus)
+{
+       u64 total = 0;
+       int cpu;
+
+       for_each_cpu(cpu, cpus)
+               total += kcpustat_field(usage, cpu);
+
+       return total;
+}
+
  extern void account_user_time(struct task_struct *, u64);
  extern void account_guest_time(struct task_struct *, u64);
  extern void account_system_time(struct task_struct *, int, u64);



Note:
As we discussed in v8, I am leaving
fs/proc/stat.c and drivers/leds/trigger/ledtrig-activity.c etc alone.
Those functions sum up multiple CPUTIME_ fields.

  parent reply	other threads:[~2026-07-27 14:43 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-24 14:07 [PATCH v9 00/11] sched, steal_governor: Introduce preferred CPUs and steal-driven vCPU backoff Shrikanth Hegde
2026-07-24 14:07 ` [PATCH v9 01/11] sched/docs: Document cpu_preferred_mask and Preferred CPU concept Shrikanth Hegde
2026-07-24 21:45   ` Yury Norov
2026-07-25  2:22     ` Shrikanth Hegde
2026-07-24 14:07 ` [PATCH v9 02/11] cpumask: Introduce cpu_preferred_mask Shrikanth Hegde
2026-07-24 20:00   ` Yury Norov
2026-07-25  3:16     ` Shrikanth Hegde
2026-07-24 14:07 ` [PATCH v9 03/11] sysfs: Add preferred CPU file Shrikanth Hegde
2026-07-24 14:07 ` [PATCH v9 04/11] sched/core: Try to use a preferred CPU in is_cpu_allowed Shrikanth Hegde
2026-07-24 14:07 ` [PATCH v9 05/11] sched/fair: Load balance only among preferred CPUs Shrikanth Hegde
2026-07-24 21:40   ` Yury Norov
2026-07-27  6:09     ` Shrikanth Hegde
2026-07-24 14:07 ` [PATCH v9 06/11] sched/core: Push current task from non preferred CPU Shrikanth Hegde
2026-07-24 22:04   ` Yury Norov
2026-07-27  8:55     ` Shrikanth Hegde
2026-07-24 14:07 ` [PATCH v9 07/11] sched/debug: Add migration stats due to non preferred CPUs Shrikanth Hegde
2026-07-24 14:07 ` [PATCH v9 08/11] virt: Introduce steal governor driver Shrikanth Hegde
2026-07-24 14:07 ` [PATCH v9 09/11] virt/steal_governor: Add control knobs for handling steal values Shrikanth Hegde
2026-07-24 14:07 ` [PATCH v9 10/11] virt/steal_governor: Implement steal_governor policy loop Shrikanth Hegde
2026-07-24 21:05   ` Yury Norov
2026-07-25  3:54     ` Shrikanth Hegde
2026-07-27 14:42     ` Shrikanth Hegde [this message]
2026-07-24 14:07 ` [PATCH v9 11/11] virt/steal_governor: Enable the driver Shrikanth Hegde
2026-07-24 22:07 ` [PATCH v9 00/11] sched, steal_governor: Introduce preferred CPUs and steal-driven vCPU backoff Yury Norov
2026-07-25  1:53   ` Shrikanth Hegde

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d3533cdb-d32a-4d75-84d5-a2908ecc7bfa@linux.ibm.com \
    --to=sshegde@linux.ibm.com \
    --cc=arighi@nvidia.com \
    --cc=chleroy@kernel.org \
    --cc=christian.loehle@arm.com \
    --cc=corbet@lwn.net \
    --cc=dietmar.eggemann@arm.com \
    --cc=frederic@kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=hdanton@sina.com \
    --cc=huschle@linux.ibm.com \
    --cc=iii@linux.ibm.com \
    --cc=jgross@suse.com \
    --cc=juri.lelli@redhat.com \
    --cc=kernellwp@gmail.com \
    --cc=kprateek.nayak@amd.com \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maddy@linux.ibm.com \
    --cc=maz@kernel.org \
    --cc=mingo@kernel.org \
    --cc=pauld@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peterz@infradead.org \
    --cc=rafael@kernel.org \
    --cc=rdunlap@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=seanjc@google.com \
    --cc=srikar@linux.ibm.com \
    --cc=tglx@kernel.org \
    --cc=tj@kernel.org \
    --cc=tommaso.cucinotta@gmail.com \
    --cc=vincent.guittot@linaro.org \
    --cc=vineeth@bitbyteword.org \
    --cc=virtualization@lists.linux.dev \
    --cc=vschneid@redhat.com \
    --cc=ynorov@nvidia.com \
    --cc=yury.norov@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.