mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2025-11-29 01:21:09 +00:00
There is no simple yes/no test to determine if pseudo-locking was
successful. In order to test pseudo-locking we expose a debugfs file for
each pseudo-locked region that will record the latency of reading the
pseudo-locked memory at a stride of 32 bytes (hardcoded). These numbers
will give us an idea of locking was successful or not since they will
reflect cache hits and cache misses (hardware prefetching is disabled
during the test).
The new debugfs file "pseudo_lock_measure" will, when the
pseudo_lock_mem_latency tracepoint is enabled, record the latency of
accessing each cache line twice.
Kernel tracepoints offer us histograms (when CONFIG_HIST_TRIGGERS is
enabled) that is a simple way to visualize the memory access latency
and immediately see any cache misses. For example, the hist trigger
below before trigger of the measurement will display the memory access
latency and instances at each latency:
echo 'hist:keys=latency' > /sys/kernel/debug/tracing/events/resctrl/\
pseudo_lock_mem_latency/trigger
echo 1 > /sys/kernel/debug/tracing/events/resctrl/pseudo_lock_mem_latency/enable
echo 1 > /sys/kernel/debug/resctrl/<newlock>/pseudo_lock_measure
echo 0 > /sys/kernel/debug/tracing/events/resctrl/pseudo_lock_mem_latency/enable
cat /sys/kernel/debug/tracing/events/resctrl/pseudo_lock_mem_latency/hist
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: fenghua.yu@intel.com
Cc: tony.luck@intel.com
Cc: vikas.shivappa@linux.intel.com
Cc: gavin.hindman@intel.com
Cc: jithu.joseph@intel.com
Cc: dave.hansen@intel.com
Cc: hpa@zytor.com
Link: https://lkml.kernel.org/r/6b2ea76181099d1b79ccfa7d3be24497ab2d1a45.1529706536.git.reinette.chatre@intel.com
61 lines
1.8 KiB
Makefile
61 lines
1.8 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# Makefile for x86-compatible CPU details, features and quirks
|
|
#
|
|
|
|
# Don't trace early stages of a secondary CPU boot
|
|
ifdef CONFIG_FUNCTION_TRACER
|
|
CFLAGS_REMOVE_common.o = -pg
|
|
CFLAGS_REMOVE_perf_event.o = -pg
|
|
endif
|
|
|
|
# If these files are instrumented, boot hangs during the first second.
|
|
KCOV_INSTRUMENT_common.o := n
|
|
KCOV_INSTRUMENT_perf_event.o := n
|
|
|
|
# Make sure load_percpu_segment has no stackprotector
|
|
nostackp := $(call cc-option, -fno-stack-protector)
|
|
CFLAGS_common.o := $(nostackp)
|
|
|
|
obj-y := cacheinfo.o scattered.o topology.o
|
|
obj-y += common.o
|
|
obj-y += rdrand.o
|
|
obj-y += match.o
|
|
obj-y += bugs.o
|
|
obj-y += aperfmperf.o
|
|
obj-y += cpuid-deps.o
|
|
|
|
obj-$(CONFIG_PROC_FS) += proc.o
|
|
obj-$(CONFIG_X86_FEATURE_NAMES) += capflags.o powerflags.o
|
|
|
|
obj-$(CONFIG_CPU_SUP_INTEL) += intel.o intel_pconfig.o
|
|
obj-$(CONFIG_CPU_SUP_AMD) += amd.o
|
|
obj-$(CONFIG_CPU_SUP_CYRIX_32) += cyrix.o
|
|
obj-$(CONFIG_CPU_SUP_CENTAUR) += centaur.o
|
|
obj-$(CONFIG_CPU_SUP_TRANSMETA_32) += transmeta.o
|
|
obj-$(CONFIG_CPU_SUP_UMC_32) += umc.o
|
|
|
|
obj-$(CONFIG_INTEL_RDT) += intel_rdt.o intel_rdt_rdtgroup.o intel_rdt_monitor.o
|
|
obj-$(CONFIG_INTEL_RDT) += intel_rdt_ctrlmondata.o intel_rdt_pseudo_lock.o
|
|
CFLAGS_intel_rdt_pseudo_lock.o = -I$(src)
|
|
|
|
obj-$(CONFIG_X86_MCE) += mcheck/
|
|
obj-$(CONFIG_MTRR) += mtrr/
|
|
obj-$(CONFIG_MICROCODE) += microcode/
|
|
|
|
obj-$(CONFIG_X86_LOCAL_APIC) += perfctr-watchdog.o
|
|
|
|
obj-$(CONFIG_HYPERVISOR_GUEST) += vmware.o hypervisor.o mshyperv.o
|
|
|
|
ifdef CONFIG_X86_FEATURE_NAMES
|
|
quiet_cmd_mkcapflags = MKCAP $@
|
|
cmd_mkcapflags = $(CONFIG_SHELL) $(srctree)/$(src)/mkcapflags.sh $< $@
|
|
|
|
cpufeature = $(src)/../../include/asm/cpufeatures.h
|
|
|
|
targets += capflags.c
|
|
$(obj)/capflags.c: $(cpufeature) $(src)/mkcapflags.sh FORCE
|
|
$(call if_changed,mkcapflags)
|
|
endif
|
|
clean-files += capflags.c
|