Messages in this thread Patch in this message | | | From | David Carrillo-Cisneros <> | Subject | [PATCH v2 04/32] perf/x86/intel/cqm: add constants for CQM | Date | Wed, 11 May 2016 16:02:04 -0700 |
| |
Add initial constants and comments.
Reviewed-by: Stephane Eranian <eranian@google.com> Signed-off-by: David Carrillo-Cisneros <davidcc@google.com> --- arch/x86/events/intel/cqm.c | 20 ++++++++++++++++++++ arch/x86/events/intel/cqm.h | 31 +++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 arch/x86/events/intel/cqm.h
diff --git a/arch/x86/events/intel/cqm.c b/arch/x86/events/intel/cqm.c index e69de29..0c4f3fe 100644 --- a/arch/x86/events/intel/cqm.c +++ b/arch/x86/events/intel/cqm.c @@ -0,0 +1,20 @@ +/* + * Intel Cache Quality-of-Service Monitoring (CQM) support. + * + * Based very, very heavily on work by Peter Zijlstra. + */ + +#include <linux/slab.h> +#include <asm/cpu_device_id.h> +#include "cqm.h" +#include "../perf_event.h" + +#define MSR_IA32_QM_CTR 0x0c8e +#define MSR_IA32_QM_EVTSEL 0x0c8d + +#define RMID_VAL_ERROR (1ULL << 63) +#define RMID_VAL_UNAVAIL (1ULL << 62) + +#define QOS_L3_OCCUP_EVENT_ID (1 << 0) + +#define QOS_EVENT_MASK QOS_L3_OCCUP_EVENT_ID diff --git a/arch/x86/events/intel/cqm.h b/arch/x86/events/intel/cqm.h new file mode 100644 index 0000000..bb906c7 --- /dev/null +++ b/arch/x86/events/intel/cqm.h @@ -0,0 +1,31 @@ +/* + * Intel Cache Quality-of-Service Monitoring (CQM) support. + * + * A Resource Manager ID (RMID) is a u32 value that, when programmed in a + * logical CPU, will allow the LLC cache to associate the changes in occupancy + * generated by that cpu (cache lines allocations - deallocations) to the RMID. + * If a RMID has been assigned to a thread T long enough for all cache lines + * used by T to be allocated, then the occupancy reported by the hardware + * equals the total cache occupancy for T. + * + * Groups of threads that are to be monitored together (such as cgroups + * or processes) can shared a RMID. + * + * This driver implements a tree hierarchy of Monitored Resources (monr). Each + * monr is a cgroup, a process or a thread that needs one single RMID. + * + * Since the number of RMIDs is relatively small to the number of potential + * monitored elements, RMIDs must be "rotated" among all monitored elements. + */ + +#include <linux/perf_event.h> +#include <asm/pqr_common.h> +#include <asm/topology.h> + +/* + * Time between execution of rotation logic. The frequency of execution does + * not affect the rate at which RMIDs are recycled, except by the delay by the + * delay updating the prmid's and their pools. + * The rotation period is stored in pmu->hrtimer_interval_ms. + */ +#define CQM_DEFAULT_ROTATION_PERIOD 1200 /* ms */ -- 2.8.0.rc3.226.g39d4020
| |