summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtools/perf/pmu-events/intel_metrics.py62
1 files changed, 62 insertions, 0 deletions
diff --git a/tools/perf/pmu-events/intel_metrics.py b/tools/perf/pmu-events/intel_metrics.py
index 52035433b505..c3a5c2965f74 100755
--- a/tools/perf/pmu-events/intel_metrics.py
+++ b/tools/perf/pmu-events/intel_metrics.py
@@ -457,6 +457,67 @@ def IntelIlp() -> MetricGroup:
])
+def IntelIotlb() -> Optional[MetricGroup]:
+ try:
+ total_hit = (
+ Event("UNC_IIO_IOMMU0.4K_HITS")
+ + Event("UNC_IIO_IOMMU0.2M_HITS")
+ + Event("UNC_IIO_IOMMU0.1G_HITS")
+ )
+ total_miss = Event("UNC_IIO_IOMMU0.MISSES")
+ except:
+ return None
+
+ miss_rate = d_ratio(total_miss, total_miss + total_hit)
+ metrics = [
+ Metric("iotlb_total_hit", "IOTLB total hit", total_hit, "hits"),
+ Metric("iotlb_total_miss", "IOTLB total miss", total_miss, "misses"),
+ Metric("iotlb_miss_rate", "IOTLB miss rate", miss_rate, "100%"),
+ ]
+
+ try:
+ interrupt_cache_hit = Event("UNC_IIO_IOMMU3.INT_CACHE_HITS")
+ interrupt_cache_lookup = Event("UNC_IIO_IOMMU3.INT_CACHE_LOOKUPS")
+ interrupt_cache_miss = max(interrupt_cache_lookup - interrupt_cache_hit, 0)
+ interrupt_cache_miss_rate = d_ratio(
+ interrupt_cache_miss, interrupt_cache_miss + interrupt_cache_hit
+ )
+ metrics += [
+ Metric(
+ "iotlb_interrupt_cache_hit",
+ "IOTLB interrupt cache hit",
+ interrupt_cache_hit,
+ "hits",
+ ),
+ Metric(
+ "iotlb_interrupt_cache_miss",
+ "IOTLB interrupt cache miss",
+ interrupt_cache_miss,
+ "misses",
+ ),
+ Metric(
+ "iotlb_interrupt_cache_lookup",
+ "IOTLB interrupt cache lookup",
+ interrupt_cache_lookup,
+ "lookups",
+ ),
+ Metric(
+ "iotlb_interrupt_cache_miss_rate",
+ "IOTLB interrupt cache miss rate",
+ interrupt_cache_miss_rate,
+ "100%",
+ ),
+ ]
+ except:
+ pass
+
+ return MetricGroup(
+ "iotlb",
+ metrics,
+ description="IOMMU TLB metrics",
+ )
+
+
def IntelL2() -> Optional[MetricGroup]:
try:
DC_HIT = Event("L2_RQSTS.DEMAND_DATA_RD_HIT")
@@ -1105,6 +1166,7 @@ def main() -> None:
IntelCtxSw(),
IntelFpu(),
IntelIlp(),
+ IntelIotlb(),
IntelL2(),
IntelLdSt(),
IntelMissLat(),