[Skiboot] [PATCH v3 1/7] doc/imc: Edit imc.rst documentation to include

Anju T Sudhakar anju at linux.vnet.ibm.com
Fri Mar 22 17:43:46 AEDT 2019


Add documentation for IMC trace-mode in imc.rst.

Signed-off-by: Anju T Sudhakar <anju at linux.vnet.ibm.com>
---
 doc/imc.rst | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 67 insertions(+)

diff --git a/doc/imc.rst b/doc/imc.rst
index 3324aa36..32fe7cb7 100644
--- a/doc/imc.rst
+++ b/doc/imc.rst
@@ -44,6 +44,73 @@ sampling duration) fetches the counter data and accumulate to main memory.
 Memory to accumulate counter data are refered from "PDBAR" (per-core scom)
 and "LDBAR" per-thread spr.
 
+Trace mode of IMC:
+------------------
+
+POWER9 support two modes for IMC which are the Accumulation mode and
+Trace mode. In Accumulation mode event counts are accumulated in system
+memory. Hypervisor/kernel then reads the posted counts periodically, or
+when requested. In IMC Trace mode, the 64 bit trace scom value is initialized
+with the event information. The CPMC*SEL and CPMC_LOAD in the trace scom, specifies
+the event to be monitored and the sampling duration. On each overflow in the
+CPMC*SEL, hardware snapshots the program counter along with event counts
+and writes into memory pointed by LDBAR. LDBAR has bits to indicate whether
+hardware is configured for accumulation or trace mode.
+Currently the event monitored for trace-mode is fixed as cycle.
+
+PMI interrupt handling is avoided, since IMC trace mode snapshots the
+program counter and update to the memory. And this also provide a way for
+the operating system to do instruction sampling in real time without
+PMI(Performance Monitoring Interrupts) processing overhead.
+
+**Example:**
+
+Performance data using 'perf top' with and without trace-imc event:
+
+
+*PMI interrupts count when `perf top` command is executed without trace-imc event.*
+::
+
+     # cat /proc/interrupts  (a snippet from the output)
+     9944      1072        804        804       1644        804       1306
+     804        804        804        804        804        804        804
+     804        804       1961       1602        804        804       1258
+     [-----------------------------------------------------------------]
+     803        803        803        803        803        803        803
+     803        803        803        803        804        804        804
+     804        804        804        804        804        804        803
+     803        803        803        803        803       1306        803
+     803   Performance monitoring interrupts
+
+
+*PMI interrupts count when `perf top` command executed with trace-imc event
+(executed right after 'perf top' without trace-imc event).*
+::
+
+   # perf top -e trace_imc/trace_cycles/
+   12.50%  [kernel]          [k] arch_cpu_idle
+   11.81%  [kernel]          [k] __next_timer_interrupt
+   11.22%  [kernel]          [k] rcu_idle_enter
+   10.25%  [kernel]          [k] find_next_bit
+    7.91%  [kernel]          [k] do_idle
+    7.69%  [kernel]          [k] rcu_dynticks_eqs_exit
+    5.20%  [kernel]          [k] tick_nohz_idle_stop_tick
+        [-----------------------]
+
+   # cat /proc/interrupts (a snippet from the output)
+
+   9944      1072        804        804       1644        804       1306
+   804        804        804        804        804        804        804
+   804        804       1961       1602        804        804       1258
+   [-----------------------------------------------------------------]
+   803        803        803        803        803        803        803
+   803        803        803        804        804        804        804
+   804        804        804        804        804        804        803
+   803        803        803        803        803       1306        803
+   803   Performance monitoring interrupts
+
+Here the PMI interrupts count remains the same.
+
 OPAL APIs:
 ----------
 
-- 
2.17.2



More information about the Skiboot mailing list