sched/vtime: Bring up complete kcpustat accessor
Many callsites want to fetch the values of system, user, user_nice, guest or guest_nice kcpustat fields altogether or at least a pair of these. In that case calling kcpustat_field() for each requested field brings unecessary overhead when we could fetch all of them in a row. So provide kcpustat_cpu_fetch() that fetches the whole kcpustat array in a vtime safe way under the same RCU and seqcount block. Signed-off-by: Frederic Weisbecker <frederic@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Wanpeng Li <wanpengli@tencent.com> Cc: Yauheni Kaliuta <yauheni.kaliuta@redhat.com> Link: https://lkml.kernel.org/r/20191121024430.19938-3-frederic@kernel.org Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:

committed by
Ingo Molnar

parent
5a1c95580f
commit
74722bb223
@@ -81,12 +81,19 @@ static inline unsigned int kstat_cpu_irqs_sum(unsigned int cpu)
|
||||
#ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN
|
||||
extern u64 kcpustat_field(struct kernel_cpustat *kcpustat,
|
||||
enum cpu_usage_stat usage, int cpu);
|
||||
extern void kcpustat_cpu_fetch(struct kernel_cpustat *dst, int cpu);
|
||||
#else
|
||||
static inline u64 kcpustat_field(struct kernel_cpustat *kcpustat,
|
||||
enum cpu_usage_stat usage, int cpu)
|
||||
{
|
||||
return kcpustat->cpustat[usage];
|
||||
}
|
||||
|
||||
static inline void kcpustat_cpu_fetch(struct kernel_cpustat *dst, int cpu)
|
||||
{
|
||||
*dst = kcpustat_cpu(cpu);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
extern void account_user_time(struct task_struct *, u64);
|
||||
|
Reference in New Issue
Block a user