提交 7d347310 编写于 作者: N Nitesh Konkar 提交者: John Ferlan

perf: add bus_cycles perf event support

This patch adds support and documentation
for the bus_cycles perf event.
Signed-off-by: NNitesh Konkar <nitkon12@linux.vnet.ibm.com>
上级 5fe099af
......@@ -1929,6 +1929,7 @@
&lt;event name='cache_misses' enabled='no'/&gt;
&lt;event name='branch_instructions' enabled='no'/&gt;
&lt;event name='branch_misses' enabled='no'/&gt;
&lt;event name='bus_cycles' enabled='no'/&gt;
&lt;/perf&gt;
...
</pre>
......@@ -1984,6 +1985,11 @@
<td>the count of branch misses by applications running on the platform</td>
<td><code>perf.branch_misses</code></td>
</tr>
<tr>
<td><code>bus_cycles</code></td>
<td>the count of bus cycles by applications running on the platform</td>
<td><code>perf.bus_cycles</code></td>
</tr>
</table>
<h3><a name="elementsDevices">Devices</a></h3>
......
......@@ -35,8 +35,9 @@
<li><strong>Improvements</strong>
<ul>
<li>perf: Add more perf statistics<br/>
Add support to get the count of branch instructions executed
and branch misses by applications running on the platform
Add support to get the count of branch instructions executed,
branch misses, and bus cycles by applications running on
the platform
</li>
</ul>
</li>
......
......@@ -429,6 +429,7 @@
<value>cache_misses</value>
<value>branch_instructions</value>
<value>branch_misses</value>
<value>bus_cycles</value>
</choice>
</attribute>
<attribute name="enabled">
......
......@@ -2145,6 +2145,16 @@ void virDomainStatsRecordListFree(virDomainStatsRecordPtr *stats);
*/
# define VIR_PERF_PARAM_BRANCH_MISSES "branch_misses"
/**
* VIR_PERF_PARAM_BUS_CYCLES:
*
* Macro for typed parameter name that represents bus_cycles
* perf event which can be used to measure the count of bus cycles
* by applications running on the platform. It corresponds to the
* "perf.bus_cycles" field in the *Stats APIs.
*/
# define VIR_PERF_PARAM_BUS_CYCLES "bus_cycles"
int virDomainGetPerfEvents(virDomainPtr dom,
virTypedParameterPtr *params,
int *nparams,
......
......@@ -11234,6 +11234,8 @@ virConnectGetDomainCapabilities(virConnectPtr conn,
* branch_instructions perf event.
* "perf.branch_misses" - The count of branch misses as unsigned long
* long. It is produced by branch_misses perf event.
* "perf.bus_cycles" - The count of bus cycles as unsigned long
* long. It is produced by bus_cycles perf event.
*
* 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
......
......@@ -9855,6 +9855,7 @@ qemuDomainSetPerfEvents(virDomainPtr dom,
VIR_PERF_PARAM_CACHE_MISSES, VIR_TYPED_PARAM_BOOLEAN,
VIR_PERF_PARAM_BRANCH_INSTRUCTIONS, VIR_TYPED_PARAM_BOOLEAN,
VIR_PERF_PARAM_BRANCH_MISSES, VIR_TYPED_PARAM_BOOLEAN,
VIR_PERF_PARAM_BUS_CYCLES, VIR_TYPED_PARAM_BOOLEAN,
NULL) < 0)
return -1;
......
......@@ -41,7 +41,8 @@ VIR_ENUM_IMPL(virPerfEvent, VIR_PERF_EVENT_LAST,
"cmt", "mbmt", "mbml",
"cpu_cycles", "instructions",
"cache_references", "cache_misses",
"branch_instructions", "branch_misses");
"branch_instructions", "branch_misses",
"bus_cycles");
struct virPerfEvent {
int type;
......@@ -92,6 +93,9 @@ static struct virPerfEventAttr attrs[] = {
{.type = VIR_PERF_EVENT_BRANCH_MISSES,
.attrType = PERF_TYPE_HARDWARE,
.attrConfig = PERF_COUNT_HW_BRANCH_MISSES},
{.type = VIR_PERF_EVENT_BUS_CYCLES,
.attrType = PERF_TYPE_HARDWARE,
.attrConfig = PERF_COUNT_HW_BUS_CYCLES},
};
typedef struct virPerfEventAttr *virPerfEventAttrPtr;
......
......@@ -39,6 +39,7 @@ typedef enum {
VIR_PERF_EVENT_BRANCH_INSTRUCTIONS, /* Count of branch instructions
for applications */
VIR_PERF_EVENT_BRANCH_MISSES, /* Count of branch misses for applications */
VIR_PERF_EVENT_BUS_CYCLES, /* Count of bus cycles for applications*/
VIR_PERF_EVENT_LAST
} virPerfEventType;
......
......@@ -22,6 +22,7 @@
<event name='cache_misses' enabled='no'/>
<event name='branch_instructions' enabled='yes'/>
<event name='branch_misses' enabled='yes'/>
<event name='bus_cycles' enabled='yes'/>
</perf>
<devices>
</devices>
......
......@@ -947,7 +947,8 @@ I<--perf> returns the statistics of all enabled perf events:
"perf.cache_references" - the count of cache hits,
"perf.cache_misses" - the count of caches misses,
"perf.branch_instructions" - the count of branch instructions,
"perf.branch_misses" - the count of branch misses
"perf.branch_misses" - the count of branch misses,
"perf.bus_cycles" - the count of bus cycles
See the B<perf> command for more details about each event.
......@@ -2299,6 +2300,8 @@ B<Valid perf event names>
platform.
branch_misses - Provides the count of branch misses executed
by applications running on the platform.
bus_cycles - Provides the count of bus cycles executed
by applications running on the platform.
B<Note>: The statistics can be retrieved using the B<domstats> command using
the I<--perf> flag.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册