提交 71bbe653 编写于 作者: N Nitesh Konkar 提交者: John Ferlan

perf: add ref_cpu_cycles perf event support

This patch adds support and documentation for
the ref_cpu_cycles perf event.
Signed-off-by: NNitesh Konkar <nitkon12@linux.vnet.ibm.com>
上级 9ae79400
...@@ -1932,6 +1932,7 @@ ...@@ -1932,6 +1932,7 @@
&lt;event name='bus_cycles' enabled='no'/&gt; &lt;event name='bus_cycles' enabled='no'/&gt;
&lt;event name='stalled_cycles_frontend' enabled='no'/&gt; &lt;event name='stalled_cycles_frontend' enabled='no'/&gt;
&lt;event name='stalled_cycles_backend' enabled='no'/&gt; &lt;event name='stalled_cycles_backend' enabled='no'/&gt;
&lt;event name='ref_cpu_cycles' enabled='no'/&gt;
&lt;/perf&gt; &lt;/perf&gt;
... ...
</pre> </pre>
...@@ -2004,6 +2005,12 @@ ...@@ -2004,6 +2005,12 @@
processor pipeline by applications running on the platform</td> processor pipeline by applications running on the platform</td>
<td><code>perf.stalled_cycles_backend</code></td> <td><code>perf.stalled_cycles_backend</code></td>
</tr> </tr>
<tr>
<td><code>ref_cpu_cycles</code></td>
<td>the count of total cpu cycles not affected by CPU frequency scaling
by applications running on the platform</td>
<td><code>perf.ref_cpu_cycles</code></td>
</tr>
</table> </table>
<h3><a name="elementsDevices">Devices</a></h3> <h3><a name="elementsDevices">Devices</a></h3>
......
...@@ -37,8 +37,8 @@ ...@@ -37,8 +37,8 @@
<li>perf: Add more perf statistics<br/> <li>perf: Add more perf statistics<br/>
Add support to get the count of branch instructions Add support to get the count of branch instructions
executed, branch misses, bus cycles, stalled frontend executed, branch misses, bus cycles, stalled frontend
cpu cycles, and stalled backend cpu cycles by applications cpu cycles, stalled backend cpu cycles, and ref cpu
running on the platform cycles by applications running on the platform
</li> </li>
</ul> </ul>
</li> </li>
......
...@@ -432,6 +432,7 @@ ...@@ -432,6 +432,7 @@
<value>bus_cycles</value> <value>bus_cycles</value>
<value>stalled_cycles_frontend</value> <value>stalled_cycles_frontend</value>
<value>stalled_cycles_backend</value> <value>stalled_cycles_backend</value>
<value>ref_cpu_cycles</value>
</choice> </choice>
</attribute> </attribute>
<attribute name="enabled"> <attribute name="enabled">
......
...@@ -2177,6 +2177,17 @@ void virDomainStatsRecordListFree(virDomainStatsRecordPtr *stats); ...@@ -2177,6 +2177,17 @@ void virDomainStatsRecordListFree(virDomainStatsRecordPtr *stats);
*/ */
# define VIR_PERF_PARAM_STALLED_CYCLES_BACKEND "stalled_cycles_backend" # define VIR_PERF_PARAM_STALLED_CYCLES_BACKEND "stalled_cycles_backend"
/**
* VIR_PERF_PARAM_REF_CPU_CYCLES:
*
* Macro for typed parameter name that represents ref_cpu_cycles
* perf event which can be used to measure the count of total cpu
* cycles not affected by CPU frequency scaling by applications
* running on the platform. It corresponds to the
* "perf.ref_cpu_cycles" field in the *Stats APIs.
*/
# define VIR_PERF_PARAM_REF_CPU_CYCLES "ref_cpu_cycles"
int virDomainGetPerfEvents(virDomainPtr dom, int virDomainGetPerfEvents(virDomainPtr dom,
virTypedParameterPtr *params, virTypedParameterPtr *params,
int *nparams, int *nparams,
......
...@@ -11246,6 +11246,10 @@ virConnectGetDomainCapabilities(virConnectPtr conn, ...@@ -11246,6 +11246,10 @@ virConnectGetDomainCapabilities(virConnectPtr conn,
* pipeline as unsigned long long. It is * pipeline as unsigned long long. It is
* produced by stalled_cycles_backend * produced by stalled_cycles_backend
* perf event. * perf event.
* "perf.ref_cpu_cycles" - The count of total cpu cycles not affected by
* CPU frequency scaling by applications running
* as unsigned long long. It is produced by the
* ref_cpu_cycles perf event.
* *
* Note that entire stats groups or individual stat fields may be missing from * Note that entire stats groups or individual stat fields may be missing from
* the output in case they are not supported by the given hypervisor, are not * the output in case they are not supported by the given hypervisor, are not
......
...@@ -9858,6 +9858,7 @@ qemuDomainSetPerfEvents(virDomainPtr dom, ...@@ -9858,6 +9858,7 @@ qemuDomainSetPerfEvents(virDomainPtr dom,
VIR_PERF_PARAM_BUS_CYCLES, VIR_TYPED_PARAM_BOOLEAN, VIR_PERF_PARAM_BUS_CYCLES, VIR_TYPED_PARAM_BOOLEAN,
VIR_PERF_PARAM_STALLED_CYCLES_FRONTEND, VIR_TYPED_PARAM_BOOLEAN, VIR_PERF_PARAM_STALLED_CYCLES_FRONTEND, VIR_TYPED_PARAM_BOOLEAN,
VIR_PERF_PARAM_STALLED_CYCLES_BACKEND, VIR_TYPED_PARAM_BOOLEAN, VIR_PERF_PARAM_STALLED_CYCLES_BACKEND, VIR_TYPED_PARAM_BOOLEAN,
VIR_PERF_PARAM_REF_CPU_CYCLES, VIR_TYPED_PARAM_BOOLEAN,
NULL) < 0) NULL) < 0)
return -1; return -1;
......
...@@ -43,7 +43,7 @@ VIR_ENUM_IMPL(virPerfEvent, VIR_PERF_EVENT_LAST, ...@@ -43,7 +43,7 @@ VIR_ENUM_IMPL(virPerfEvent, VIR_PERF_EVENT_LAST,
"cache_references", "cache_misses", "cache_references", "cache_misses",
"branch_instructions", "branch_misses", "branch_instructions", "branch_misses",
"bus_cycles", "stalled_cycles_frontend", "bus_cycles", "stalled_cycles_frontend",
"stalled_cycles_backend"); "stalled_cycles_backend", "ref_cpu_cycles");
struct virPerfEvent { struct virPerfEvent {
int type; int type;
...@@ -103,6 +103,9 @@ static struct virPerfEventAttr attrs[] = { ...@@ -103,6 +103,9 @@ static struct virPerfEventAttr attrs[] = {
{.type = VIR_PERF_EVENT_STALLED_CYCLES_BACKEND, {.type = VIR_PERF_EVENT_STALLED_CYCLES_BACKEND,
.attrType = PERF_TYPE_HARDWARE, .attrType = PERF_TYPE_HARDWARE,
.attrConfig = PERF_COUNT_HW_STALLED_CYCLES_BACKEND}, .attrConfig = PERF_COUNT_HW_STALLED_CYCLES_BACKEND},
{.type = VIR_PERF_EVENT_REF_CPU_CYCLES,
.attrType = PERF_TYPE_HARDWARE,
.attrConfig = PERF_COUNT_HW_REF_CPU_CYCLES},
}; };
typedef struct virPerfEventAttr *virPerfEventAttrPtr; typedef struct virPerfEventAttr *virPerfEventAttrPtr;
......
...@@ -46,6 +46,7 @@ typedef enum { ...@@ -46,6 +46,7 @@ typedef enum {
VIR_PERF_EVENT_STALLED_CYCLES_BACKEND, /* Count of stalled cpu cycles in VIR_PERF_EVENT_STALLED_CYCLES_BACKEND, /* Count of stalled cpu cycles in
the backend of the instruction the backend of the instruction
processor pipeline */ processor pipeline */
VIR_PERF_EVENT_REF_CPU_CYCLES, /* Count of ref cpu cycles */
VIR_PERF_EVENT_LAST VIR_PERF_EVENT_LAST
} virPerfEventType; } virPerfEventType;
......
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
<event name='bus_cycles' enabled='yes'/> <event name='bus_cycles' enabled='yes'/>
<event name='stalled_cycles_frontend' enabled='yes'/> <event name='stalled_cycles_frontend' enabled='yes'/>
<event name='stalled_cycles_backend' enabled='yes'/> <event name='stalled_cycles_backend' enabled='yes'/>
<event name='ref_cpu_cycles' enabled='yes'/>
</perf> </perf>
<devices> <devices>
</devices> </devices>
......
...@@ -950,7 +950,8 @@ I<--perf> returns the statistics of all enabled perf events: ...@@ -950,7 +950,8 @@ I<--perf> returns the statistics of all enabled perf events:
"perf.branch_misses" - the count of branch misses, "perf.branch_misses" - the count of branch misses,
"perf.bus_cycles" - the count of bus cycles, "perf.bus_cycles" - the count of bus cycles,
"perf.stalled_cycles_frontend" - the count of stalled frontend cpu cycles, "perf.stalled_cycles_frontend" - the count of stalled frontend cpu cycles,
"perf.stalled_cycles_backend" - the count of stalled backend cpu cycles "perf.stalled_cycles_backend" - the count of stalled backend cpu cycles,
"perf.ref_cpu_cycles" - the count of ref cpu cycles
See the B<perf> command for more details about each event. See the B<perf> command for more details about each event.
...@@ -2312,6 +2313,9 @@ B<Valid perf event names> ...@@ -2312,6 +2313,9 @@ B<Valid perf event names>
cycles in the backend of the cycles in the backend of the
instruction processor pipeline by instruction processor pipeline by
applications running on the platform. applications running on the platform.
ref_cpu_cycles - Provides the count of total cpu cycles
not affected by CPU frequency scaling by
applications running on the platform.
B<Note>: The statistics can be retrieved using the B<domstats> command using B<Note>: The statistics can be retrieved using the B<domstats> command using
the I<--perf> flag. the I<--perf> flag.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册