Messages in this thread | | | Subject | Re: [PATCH v4 2/2] proc: add AVX-512 usage to /proc/pid/status | From | Tim Chen <> | Date | Tue, 11 Dec 2018 09:57:03 -0800 |
| |
On 12/10/18 4:24 PM, Aubrey Li wrote: > AVX-512 components usage could cause core turbo frequency drop. So > it's useful to expose AVX-512 components usage as a heuristic hint > for the user space job scheduler to cluster the AVX-512 using tasks > together. > > Example: > $ cat /proc/pid/status | grep AVX512_hint > AVX512_hint: 1 > > The hint number '0' indicates the task recently didn't use AVX-512 > components thus unlikely has frequency drop issue. And the number '1' > indicates the task recently used AVX-512 components thus could cause > core frequency drop. User space tools may want to further check by: > > $ perf stat --pid <pid> -e core_power.lvl2_turbo_license -- sleep 1 > > Performance counter stats for process id '3558': > > 3,251,565,961 core_power.lvl2_turbo_license > > 1.004031387 seconds time elapsed > > Non-zero counter value confirms that the task causes frequency drop. > > Signed-off-by: Aubrey Li <aubrey.li@linux.intel.com> > Cc: Peter Zijlstra <peterz@infradead.org> > Cc: Andi Kleen <ak@linux.intel.com> > Cc: Tim Chen <tim.c.chen@linux.intel.com> > Cc: Dave Hansen <dave.hansen@intel.com> > Cc: Arjan van de Ven <arjan@linux.intel.com> > --- > arch/x86/kernel/fpu/xstate.c | 19 +++++++++++++++++++ > fs/proc/array.c | 5 +++++ > 2 files changed, 24 insertions(+) > > diff --git a/arch/x86/kernel/fpu/xstate.c b/arch/x86/kernel/fpu/xstate.c > index 87a57b7642d3..98baa47c97b0 100644 > --- a/arch/x86/kernel/fpu/xstate.c > +++ b/arch/x86/kernel/fpu/xstate.c > @@ -7,6 +7,7 @@ > #include <linux/cpu.h> > #include <linux/mman.h> > #include <linux/pkeys.h> > +#include <linux/seq_file.h> > > #include <asm/fpu/api.h> > #include <asm/fpu/internal.h> > @@ -1245,3 +1246,21 @@ int copy_user_to_xstate(struct xregs_state *xsave, const void __user *ubuf) > > return 0; > } > + > +/* > + * Report CPU specific thread state > + */ > +void arch_task_state(struct seq_file *m, struct task_struct *task) > +{ > + /* > + * Check the processor and build option if AVX512 is supported. > + */ > + if (!cpu_feature_enabled(X86_FEATURE_AVX512F)) > + return; > + /* > + * Report AVX-512 components usage: > + */ > + seq_put_decimal_ull(m, "AVX512_hint:\t", > + task->thread.fpu.avx512_usage ? 1 : 0);
I believe you need some kind of documentation of this new interface in kernel's Documentation. So an admin doesn't need to look into the kernel code to figure out what this /proc/pid/status is supposed to do.
Tim
| |