[libvirt] [PATCH v2 00/10] perf: Add software perf events

This patch series adds software perf events. The perl and go patches shall follow shortly. Nitesh Konkar (10): perf: add cpu_clock software perf event support perf: add task_clock software perf event support perf: add page_faults software perf event support perf: add context_switches software perf event support perf: add cpu_migrations software perf event support perf: add page_faults_min software perf event support perf: add page_faults_maj software perf event support perf: add alignment_faults software perf event support perf: add emulation_faults software perf event support news: Update the news.xml about perf events added docs/formatdomain.html.in | 74 +++++++++++++++++++++++ docs/news.xml | 11 ++++ docs/schemas/domaincommon.rng | 9 +++ include/libvirt/libvirt-domain.h | 92 +++++++++++++++++++++++++++++ src/libvirt-domain.c | 25 ++++++++ src/qemu/qemu_driver.c | 9 +++ src/util/virperf.c | 33 ++++++++++- src/util/virperf.h | 9 +++ tests/genericxml2xmlindata/generic-perf.xml | 9 +++ tools/virsh.pod | 27 +++++++++ 10 files changed, 297 insertions(+), 1 deletion(-) -- 1.9.3

This patch adds support and documentation for the cpu_clock perf event. Signed-off-by: Nitesh Konkar <nitkon12@linux.vnet.ibm.com> --- docs/formatdomain.html.in | 8 ++++++++ docs/schemas/domaincommon.rng | 1 + include/libvirt/libvirt-domain.h | 11 +++++++++++ src/libvirt-domain.c | 2 ++ src/qemu/qemu_driver.c | 1 + src/util/virperf.c | 6 +++++- src/util/virperf.h | 1 + tests/genericxml2xmlindata/generic-perf.xml | 1 + tools/virsh.pod | 3 +++ 9 files changed, 33 insertions(+), 1 deletion(-) diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index 02ce792..403932b 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -1936,6 +1936,7 @@ <event name='stalled_cycles_frontend' enabled='no'/> <event name='stalled_cycles_backend' enabled='no'/> <event name='ref_cpu_cycles' enabled='no'/> + <event name='cpu_clock' enabled='no'/> </perf> ... </pre> @@ -2014,6 +2015,13 @@ by applications running on the platform</td> <td><code>perf.ref_cpu_cycles</code></td> </tr> + <tr> + <td><code>cpu_clock</code></td> + <td>the count of cpu clock time, as measured by a monotonic + high-resolution per-CPU timer, by applications running on + the platform</td> + <td><code>perf.cpu_clock</code></td> + </tr> </table> <h3><a name="elementsDevices">Devices</a></h3> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index c64544a..8f52830 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -433,6 +433,7 @@ <value>stalled_cycles_frontend</value> <value>stalled_cycles_backend</value> <value>ref_cpu_cycles</value> + <value>cpu_clock</value> </choice> </attribute> <attribute name="enabled"> diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h index c0f715d..d594121 100644 --- a/include/libvirt/libvirt-domain.h +++ b/include/libvirt/libvirt-domain.h @@ -2188,6 +2188,17 @@ void virDomainStatsRecordListFree(virDomainStatsRecordPtr *stats); */ # define VIR_PERF_PARAM_REF_CPU_CYCLES "ref_cpu_cycles" +/** + * VIR_PERF_PARAM_CPU_CLOCK: + * + * Macro for typed parameter name that represents cpu_clock + * perf event which can be used to measure the count of cpu + * clock time by applications running on the platform. It + * corresponds to the "perf.cpu_clock" field in the *Stats + * APIs. + */ +# define VIR_PERF_PARAM_CPU_CLOCK "cpu_clock" + int virDomainGetPerfEvents(virDomainPtr dom, virTypedParameterPtr *params, int *nparams, diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index 619a9fc..427101f 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -11250,6 +11250,8 @@ virConnectGetDomainCapabilities(virConnectPtr conn, * CPU frequency scaling by applications running * as unsigned long long. It is produced by the * ref_cpu_cycles perf event. + * "perf.cpu_clock" - The count of cpu clock time as unsigned long long. + * It is produced by the cpu_clock 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 diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 6e1e3d4..d64db3f 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -9569,6 +9569,7 @@ qemuDomainSetPerfEvents(virDomainPtr dom, VIR_PERF_PARAM_STALLED_CYCLES_FRONTEND, VIR_TYPED_PARAM_BOOLEAN, VIR_PERF_PARAM_STALLED_CYCLES_BACKEND, VIR_TYPED_PARAM_BOOLEAN, VIR_PERF_PARAM_REF_CPU_CYCLES, VIR_TYPED_PARAM_BOOLEAN, + VIR_PERF_PARAM_CPU_CLOCK, VIR_TYPED_PARAM_BOOLEAN, NULL) < 0) return -1; diff --git a/src/util/virperf.c b/src/util/virperf.c index 4493608..2d6cbbb 100644 --- a/src/util/virperf.c +++ b/src/util/virperf.c @@ -43,7 +43,8 @@ VIR_ENUM_IMPL(virPerfEvent, VIR_PERF_EVENT_LAST, "cache_references", "cache_misses", "branch_instructions", "branch_misses", "bus_cycles", "stalled_cycles_frontend", - "stalled_cycles_backend", "ref_cpu_cycles"); + "stalled_cycles_backend", "ref_cpu_cycles", + "cpu_clock"); struct virPerfEvent { int type; @@ -112,6 +113,9 @@ static struct virPerfEventAttr attrs[] = { .attrConfig = 0, # endif }, + {.type = VIR_PERF_EVENT_CPU_CLOCK, + .attrType = PERF_TYPE_SOFTWARE, + .attrConfig = PERF_COUNT_SW_CPU_CLOCK}, }; typedef struct virPerfEventAttr *virPerfEventAttrPtr; diff --git a/src/util/virperf.h b/src/util/virperf.h index 1f43c92..8a7270c 100644 --- a/src/util/virperf.h +++ b/src/util/virperf.h @@ -47,6 +47,7 @@ typedef enum { the backend of the instruction processor pipeline */ VIR_PERF_EVENT_REF_CPU_CYCLES, /* Count of ref cpu cycles */ + VIR_PERF_EVENT_CPU_CLOCK, /* Count of cpu clock time*/ VIR_PERF_EVENT_LAST } virPerfEventType; diff --git a/tests/genericxml2xmlindata/generic-perf.xml b/tests/genericxml2xmlindata/generic-perf.xml index 437cd65..3e7834e 100644 --- a/tests/genericxml2xmlindata/generic-perf.xml +++ b/tests/genericxml2xmlindata/generic-perf.xml @@ -26,6 +26,7 @@ <event name='stalled_cycles_frontend' enabled='yes'/> <event name='stalled_cycles_backend' enabled='yes'/> <event name='ref_cpu_cycles' enabled='yes'/> + <event name='cpu_clock' enabled='yes'/> </perf> <devices> </devices> diff --git a/tools/virsh.pod b/tools/virsh.pod index 6c06ee0..b672679 100644 --- a/tools/virsh.pod +++ b/tools/virsh.pod @@ -964,6 +964,7 @@ I<--perf> returns the statistics of all enabled perf events: "perf.stalled_cycles_backend" - the count of stalled backend cpu cycles "perf.ref_cpu_cycles" - the count of ref cpu cycles + "perf.cpu_clock" - the count of cpu clock time See the B<perf> command for more details about each event. @@ -2333,6 +2334,8 @@ B<Valid perf event names> ref_cpu_cycles - Provides the count of total cpu cycles not affected by CPU frequency scaling by applications running on the platform. + cpu_clock - Provides the cpu clock time consumed by + applications running on the platform. B<Note>: The statistics can be retrieved using the B<domstats> command using the I<--perf> flag. -- 1.9.3

This patch adds support and documentation for the task_clock perf event. Signed-off-by: Nitesh Konkar <nitkon12@linux.vnet.ibm.com> --- docs/formatdomain.html.in | 8 ++++++++ docs/schemas/domaincommon.rng | 1 + include/libvirt/libvirt-domain.h | 11 +++++++++++ src/libvirt-domain.c | 2 ++ src/qemu/qemu_driver.c | 1 + src/util/virperf.c | 5 ++++- src/util/virperf.h | 1 + tests/genericxml2xmlindata/generic-perf.xml | 1 + tools/virsh.pod | 3 +++ 9 files changed, 32 insertions(+), 1 deletion(-) diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index 403932b..2840e3c 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -1937,6 +1937,7 @@ <event name='stalled_cycles_backend' enabled='no'/> <event name='ref_cpu_cycles' enabled='no'/> <event name='cpu_clock' enabled='no'/> + <event name='task_clock' enabled='no'/> </perf> ... </pre> @@ -2022,6 +2023,13 @@ the platform</td> <td><code>perf.cpu_clock</code></td> </tr> + <tr> + <td><code>task_clock</code></td> + <td>the count of task clock time, as measured by a monotonic + high-resolution CPU timer, specific to the task that + is run by applications running on the platform</td> + <td><code>perf.task_clock</code></td> + </tr> </table> <h3><a name="elementsDevices">Devices</a></h3> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index 8f52830..64b5bfc 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -434,6 +434,7 @@ <value>stalled_cycles_backend</value> <value>ref_cpu_cycles</value> <value>cpu_clock</value> + <value>task_clock</value> </choice> </attribute> <attribute name="enabled"> diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h index d594121..2495c90 100644 --- a/include/libvirt/libvirt-domain.h +++ b/include/libvirt/libvirt-domain.h @@ -2199,6 +2199,17 @@ void virDomainStatsRecordListFree(virDomainStatsRecordPtr *stats); */ # define VIR_PERF_PARAM_CPU_CLOCK "cpu_clock" +/** + * VIR_PERF_PARAM_TASK_CLOCK: + * + * Macro for typed parameter name that represents task_clock + * perf event which can be used to measure the count of task + * clock time by applications running on the platform. It + * corresponds to the "perf.task_clock" field in the *Stats + * APIs. + */ +# define VIR_PERF_PARAM_TASK_CLOCK "task_clock" + int virDomainGetPerfEvents(virDomainPtr dom, virTypedParameterPtr *params, int *nparams, diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index 427101f..c3db338 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -11252,6 +11252,8 @@ virConnectGetDomainCapabilities(virConnectPtr conn, * ref_cpu_cycles perf event. * "perf.cpu_clock" - The count of cpu clock time as unsigned long long. * It is produced by the cpu_clock perf event. + * "perf.task_clock" - The count of task clock time as unsigned long long. + * It is produced by the task_clock 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 diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index d64db3f..fdbb84b 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -9570,6 +9570,7 @@ qemuDomainSetPerfEvents(virDomainPtr dom, VIR_PERF_PARAM_STALLED_CYCLES_BACKEND, VIR_TYPED_PARAM_BOOLEAN, VIR_PERF_PARAM_REF_CPU_CYCLES, VIR_TYPED_PARAM_BOOLEAN, VIR_PERF_PARAM_CPU_CLOCK, VIR_TYPED_PARAM_BOOLEAN, + VIR_PERF_PARAM_TASK_CLOCK, VIR_TYPED_PARAM_BOOLEAN, NULL) < 0) return -1; diff --git a/src/util/virperf.c b/src/util/virperf.c index 2d6cbbb..16301fd 100644 --- a/src/util/virperf.c +++ b/src/util/virperf.c @@ -44,7 +44,7 @@ VIR_ENUM_IMPL(virPerfEvent, VIR_PERF_EVENT_LAST, "branch_instructions", "branch_misses", "bus_cycles", "stalled_cycles_frontend", "stalled_cycles_backend", "ref_cpu_cycles", - "cpu_clock"); + "cpu_clock", "task_clock"); struct virPerfEvent { int type; @@ -116,6 +116,9 @@ static struct virPerfEventAttr attrs[] = { {.type = VIR_PERF_EVENT_CPU_CLOCK, .attrType = PERF_TYPE_SOFTWARE, .attrConfig = PERF_COUNT_SW_CPU_CLOCK}, + {.type = VIR_PERF_EVENT_TASK_CLOCK, + .attrType = PERF_TYPE_SOFTWARE, + .attrConfig = PERF_COUNT_SW_TASK_CLOCK}, }; typedef struct virPerfEventAttr *virPerfEventAttrPtr; diff --git a/src/util/virperf.h b/src/util/virperf.h index 8a7270c..bfff8fc 100644 --- a/src/util/virperf.h +++ b/src/util/virperf.h @@ -48,6 +48,7 @@ typedef enum { processor pipeline */ VIR_PERF_EVENT_REF_CPU_CYCLES, /* Count of ref cpu cycles */ VIR_PERF_EVENT_CPU_CLOCK, /* Count of cpu clock time*/ + VIR_PERF_EVENT_TASK_CLOCK, /* Count of task clock time*/ VIR_PERF_EVENT_LAST } virPerfEventType; diff --git a/tests/genericxml2xmlindata/generic-perf.xml b/tests/genericxml2xmlindata/generic-perf.xml index 3e7834e..5ebc0a2 100644 --- a/tests/genericxml2xmlindata/generic-perf.xml +++ b/tests/genericxml2xmlindata/generic-perf.xml @@ -27,6 +27,7 @@ <event name='stalled_cycles_backend' enabled='yes'/> <event name='ref_cpu_cycles' enabled='yes'/> <event name='cpu_clock' enabled='yes'/> + <event name='task_clock' enabled='yes'/> </perf> <devices> </devices> diff --git a/tools/virsh.pod b/tools/virsh.pod index b672679..b91b9a4 100644 --- a/tools/virsh.pod +++ b/tools/virsh.pod @@ -965,6 +965,7 @@ I<--perf> returns the statistics of all enabled perf events: cpu cycles "perf.ref_cpu_cycles" - the count of ref cpu cycles "perf.cpu_clock" - the count of cpu clock time + "perf.task_clock" - the count of task clock time See the B<perf> command for more details about each event. @@ -2336,6 +2337,8 @@ B<Valid perf event names> applications running on the platform. cpu_clock - Provides the cpu clock time consumed by applications running on the platform. + task_clock - Provides the task clock time consumed by + applications running on the platform. B<Note>: The statistics can be retrieved using the B<domstats> command using the I<--perf> flag. -- 1.9.3

This patch adds support and documentation for the page_faults perf event. Signed-off-by: Nitesh Konkar <nitkon12@linux.vnet.ibm.com> --- docs/formatdomain.html.in | 8 ++++++++ docs/schemas/domaincommon.rng | 1 + include/libvirt/libvirt-domain.h | 11 +++++++++++ src/libvirt-domain.c | 2 ++ src/qemu/qemu_driver.c | 1 + src/util/virperf.c | 5 ++++- src/util/virperf.h | 1 + tests/genericxml2xmlindata/generic-perf.xml | 1 + tools/virsh.pod | 3 +++ 9 files changed, 32 insertions(+), 1 deletion(-) diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index 2840e3c..72d33fa 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -1938,6 +1938,7 @@ <event name='ref_cpu_cycles' enabled='no'/> <event name='cpu_clock' enabled='no'/> <event name='task_clock' enabled='no'/> + <event name='page_faults' enabled='no'/> </perf> ... </pre> @@ -2030,6 +2031,13 @@ is run by applications running on the platform</td> <td><code>perf.task_clock</code></td> </tr> + <tr> + <td><code>page_faults</code></td> + <td>the count of page faults by applications running on the + platform. This includes minor, major, invalid and other + types of page faults</td> + <td><code>perf.page_faults</code></td> + </tr> </table> <h3><a name="elementsDevices">Devices</a></h3> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index 64b5bfc..856a2f7 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -435,6 +435,7 @@ <value>ref_cpu_cycles</value> <value>cpu_clock</value> <value>task_clock</value> + <value>page_faults</value> </choice> </attribute> <attribute name="enabled"> diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h index 2495c90..1a6cb19 100644 --- a/include/libvirt/libvirt-domain.h +++ b/include/libvirt/libvirt-domain.h @@ -2210,6 +2210,17 @@ void virDomainStatsRecordListFree(virDomainStatsRecordPtr *stats); */ # define VIR_PERF_PARAM_TASK_CLOCK "task_clock" +/** +* VIR_PERF_PARAM_PAGE_FAULTS: +* +* Macro for typed parameter name that represents page_faults +* perf event which can be used to measure the count of page +* faults by applications running on the platform. It corresponds +* to the "perf.page_faults" field in the *Stats APIs. +*/ +# define VIR_PERF_PARAM_PAGE_FAULTS "page_faults" + + int virDomainGetPerfEvents(virDomainPtr dom, virTypedParameterPtr *params, int *nparams, diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index c3db338..77c6e8a 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -11254,6 +11254,8 @@ virConnectGetDomainCapabilities(virConnectPtr conn, * It is produced by the cpu_clock perf event. * "perf.task_clock" - The count of task clock time as unsigned long long. * It is produced by the task_clock perf event. + * "perf.page_faults" - The count of page faults as unsigned long long. + * It is produced by the page_faults 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 diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index fdbb84b..10d4e59 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -9571,6 +9571,7 @@ qemuDomainSetPerfEvents(virDomainPtr dom, VIR_PERF_PARAM_REF_CPU_CYCLES, VIR_TYPED_PARAM_BOOLEAN, VIR_PERF_PARAM_CPU_CLOCK, VIR_TYPED_PARAM_BOOLEAN, VIR_PERF_PARAM_TASK_CLOCK, VIR_TYPED_PARAM_BOOLEAN, + VIR_PERF_PARAM_PAGE_FAULTS, VIR_TYPED_PARAM_BOOLEAN, NULL) < 0) return -1; diff --git a/src/util/virperf.c b/src/util/virperf.c index 16301fd..4ae13af 100644 --- a/src/util/virperf.c +++ b/src/util/virperf.c @@ -44,7 +44,7 @@ VIR_ENUM_IMPL(virPerfEvent, VIR_PERF_EVENT_LAST, "branch_instructions", "branch_misses", "bus_cycles", "stalled_cycles_frontend", "stalled_cycles_backend", "ref_cpu_cycles", - "cpu_clock", "task_clock"); + "cpu_clock", "task_clock", "page_faults"); struct virPerfEvent { int type; @@ -119,6 +119,9 @@ static struct virPerfEventAttr attrs[] = { {.type = VIR_PERF_EVENT_TASK_CLOCK, .attrType = PERF_TYPE_SOFTWARE, .attrConfig = PERF_COUNT_SW_TASK_CLOCK}, + {.type = VIR_PERF_EVENT_PAGE_FAULTS, + .attrType = PERF_TYPE_SOFTWARE, + .attrConfig = PERF_COUNT_SW_PAGE_FAULTS}, }; typedef struct virPerfEventAttr *virPerfEventAttrPtr; diff --git a/src/util/virperf.h b/src/util/virperf.h index bfff8fc..182a9ec 100644 --- a/src/util/virperf.h +++ b/src/util/virperf.h @@ -49,6 +49,7 @@ typedef enum { VIR_PERF_EVENT_REF_CPU_CYCLES, /* Count of ref cpu cycles */ VIR_PERF_EVENT_CPU_CLOCK, /* Count of cpu clock time*/ VIR_PERF_EVENT_TASK_CLOCK, /* Count of task clock time*/ + VIR_PERF_EVENT_PAGE_FAULTS, /* Count of total page faults */ VIR_PERF_EVENT_LAST } virPerfEventType; diff --git a/tests/genericxml2xmlindata/generic-perf.xml b/tests/genericxml2xmlindata/generic-perf.xml index 5ebc0a2..3f27887 100644 --- a/tests/genericxml2xmlindata/generic-perf.xml +++ b/tests/genericxml2xmlindata/generic-perf.xml @@ -28,6 +28,7 @@ <event name='ref_cpu_cycles' enabled='yes'/> <event name='cpu_clock' enabled='yes'/> <event name='task_clock' enabled='yes'/> + <event name='page_faults' enabled='yes'/> </perf> <devices> </devices> diff --git a/tools/virsh.pod b/tools/virsh.pod index b91b9a4..81fd0fb 100644 --- a/tools/virsh.pod +++ b/tools/virsh.pod @@ -966,6 +966,7 @@ I<--perf> returns the statistics of all enabled perf events: "perf.ref_cpu_cycles" - the count of ref cpu cycles "perf.cpu_clock" - the count of cpu clock time "perf.task_clock" - the count of task clock time + "perf.page_faults" - the count of page faults See the B<perf> command for more details about each event. @@ -2339,6 +2340,8 @@ B<Valid perf event names> applications running on the platform. task_clock - Provides the task clock time consumed by applications running on the platform. + page_faults - Provides the count of page faults by + applications running on the platform B<Note>: The statistics can be retrieved using the B<domstats> command using the I<--perf> flag. -- 1.9.3

This patch adds support and documentation for the context_switches perf event. Signed-off-by: Nitesh Konkar <nitkon12@linux.vnet.ibm.com> --- docs/formatdomain.html.in | 7 +++++++ docs/schemas/domaincommon.rng | 1 + include/libvirt/libvirt-domain.h | 10 ++++++++++ src/libvirt-domain.c | 3 +++ src/qemu/qemu_driver.c | 1 + src/util/virperf.c | 6 +++++- src/util/virperf.h | 1 + tests/genericxml2xmlindata/generic-perf.xml | 1 + tools/virsh.pod | 3 +++ 9 files changed, 32 insertions(+), 1 deletion(-) diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index 72d33fa..bff699f 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -1939,6 +1939,7 @@ <event name='cpu_clock' enabled='no'/> <event name='task_clock' enabled='no'/> <event name='page_faults' enabled='no'/> + <event name='context_switches' enabled='no'/> </perf> ... </pre> @@ -2038,6 +2039,12 @@ types of page faults</td> <td><code>perf.page_faults</code></td> </tr> + <tr> + <td><code>context_switches</code></td> + <td>the count of context switches by applications running on + the platform</td> + <td><code>perf.context_switches</code></td> + </tr> </table> <h3><a name="elementsDevices">Devices</a></h3> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index 856a2f7..1a4b6cb 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -436,6 +436,7 @@ <value>cpu_clock</value> <value>task_clock</value> <value>page_faults</value> + <value>context_switches</value> </choice> </attribute> <attribute name="enabled"> diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h index 1a6cb19..f7e4cd2 100644 --- a/include/libvirt/libvirt-domain.h +++ b/include/libvirt/libvirt-domain.h @@ -2220,6 +2220,16 @@ void virDomainStatsRecordListFree(virDomainStatsRecordPtr *stats); */ # define VIR_PERF_PARAM_PAGE_FAULTS "page_faults" +/** + * VIR_PERF_PARAM_CONTEXT_SWITCHES: + * + * Macro for typed parameter name that represents context_switches + * perf event which can be used to measure the count of context + * switches by applications running on the platform. It corresponds + * to the "perf.context_switches" field in the *Stats APIs. + */ +# define VIR_PERF_PARAM_CONTEXT_SWITCHES "context_switches" + int virDomainGetPerfEvents(virDomainPtr dom, virTypedParameterPtr *params, diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index 77c6e8a..6b29d14 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -11256,6 +11256,9 @@ virConnectGetDomainCapabilities(virConnectPtr conn, * It is produced by the task_clock perf event. * "perf.page_faults" - The count of page faults as unsigned long long. * It is produced by the page_faults perf event + * "perf.context_switches" - The count of context switches as unsigned long + * long. It is produced by the context_switches + * 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 diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 10d4e59..8d6df1a 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -9572,6 +9572,7 @@ qemuDomainSetPerfEvents(virDomainPtr dom, VIR_PERF_PARAM_CPU_CLOCK, VIR_TYPED_PARAM_BOOLEAN, VIR_PERF_PARAM_TASK_CLOCK, VIR_TYPED_PARAM_BOOLEAN, VIR_PERF_PARAM_PAGE_FAULTS, VIR_TYPED_PARAM_BOOLEAN, + VIR_PERF_PARAM_CONTEXT_SWITCHES, VIR_TYPED_PARAM_BOOLEAN, NULL) < 0) return -1; diff --git a/src/util/virperf.c b/src/util/virperf.c index 4ae13af..ba81e08 100644 --- a/src/util/virperf.c +++ b/src/util/virperf.c @@ -44,7 +44,8 @@ VIR_ENUM_IMPL(virPerfEvent, VIR_PERF_EVENT_LAST, "branch_instructions", "branch_misses", "bus_cycles", "stalled_cycles_frontend", "stalled_cycles_backend", "ref_cpu_cycles", - "cpu_clock", "task_clock", "page_faults"); + "cpu_clock", "task_clock", "page_faults", + "context_switches"); struct virPerfEvent { int type; @@ -122,6 +123,9 @@ static struct virPerfEventAttr attrs[] = { {.type = VIR_PERF_EVENT_PAGE_FAULTS, .attrType = PERF_TYPE_SOFTWARE, .attrConfig = PERF_COUNT_SW_PAGE_FAULTS}, + {.type = VIR_PERF_EVENT_CONTEXT_SWITCHES, + .attrType = PERF_TYPE_SOFTWARE, + .attrConfig = PERF_COUNT_SW_CONTEXT_SWITCHES}, }; typedef struct virPerfEventAttr *virPerfEventAttrPtr; diff --git a/src/util/virperf.h b/src/util/virperf.h index 182a9ec..2adc549 100644 --- a/src/util/virperf.h +++ b/src/util/virperf.h @@ -50,6 +50,7 @@ typedef enum { VIR_PERF_EVENT_CPU_CLOCK, /* Count of cpu clock time*/ VIR_PERF_EVENT_TASK_CLOCK, /* Count of task clock time*/ VIR_PERF_EVENT_PAGE_FAULTS, /* Count of total page faults */ + VIR_PERF_EVENT_CONTEXT_SWITCHES, /* Count of context switches */ VIR_PERF_EVENT_LAST } virPerfEventType; diff --git a/tests/genericxml2xmlindata/generic-perf.xml b/tests/genericxml2xmlindata/generic-perf.xml index 3f27887..29a2273 100644 --- a/tests/genericxml2xmlindata/generic-perf.xml +++ b/tests/genericxml2xmlindata/generic-perf.xml @@ -29,6 +29,7 @@ <event name='cpu_clock' enabled='yes'/> <event name='task_clock' enabled='yes'/> <event name='page_faults' enabled='yes'/> + <event name='context_switches' enabled='yes'/> </perf> <devices> </devices> diff --git a/tools/virsh.pod b/tools/virsh.pod index 81fd0fb..eb7c255 100644 --- a/tools/virsh.pod +++ b/tools/virsh.pod @@ -967,6 +967,7 @@ I<--perf> returns the statistics of all enabled perf events: "perf.cpu_clock" - the count of cpu clock time "perf.task_clock" - the count of task clock time "perf.page_faults" - the count of page faults + "perf.context_switches" - the count of context switches. See the B<perf> command for more details about each event. @@ -2342,6 +2343,8 @@ B<Valid perf event names> applications running on the platform. page_faults - Provides the count of page faults by applications running on the platform + context_switches - Provides the count of context switches + by applications running on the platform B<Note>: The statistics can be retrieved using the B<domstats> command using the I<--perf> flag. -- 1.9.3

This patch adds support and documentation for the cpu_migrations perf event. Signed-off-by: Nitesh Konkar <nitkon12@linux.vnet.ibm.com> --- docs/formatdomain.html.in | 8 ++++++++ docs/schemas/domaincommon.rng | 1 + include/libvirt/libvirt-domain.h | 9 +++++++++ src/libvirt-domain.c | 4 ++++ src/qemu/qemu_driver.c | 1 + src/util/virperf.c | 5 ++++- src/util/virperf.h | 1 + tests/genericxml2xmlindata/generic-perf.xml | 1 + tools/virsh.pod | 3 +++ 9 files changed, 32 insertions(+), 1 deletion(-) diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index bff699f..49f1e5e 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -1940,6 +1940,7 @@ <event name='task_clock' enabled='no'/> <event name='page_faults' enabled='no'/> <event name='context_switches' enabled='no'/> + <event name='cpu_migrations' enabled='no'/> </perf> ... </pre> @@ -2045,6 +2046,13 @@ the platform</td> <td><code>perf.context_switches</code></td> </tr> + <tr> + <td><code>cpu_migrations</code></td> + <td>the count of cpu migrations, that is, where the process + moved from one logical processor to another, by + applications running on the platform</td> + <td><code>perf.cpu_migrations</code></td> + </tr> </table> <h3><a name="elementsDevices">Devices</a></h3> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index 1a4b6cb..a14b18a 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -437,6 +437,7 @@ <value>task_clock</value> <value>page_faults</value> <value>context_switches</value> + <value>cpu_migrations</value> </choice> </attribute> <attribute name="enabled"> diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h index f7e4cd2..7e24f50 100644 --- a/include/libvirt/libvirt-domain.h +++ b/include/libvirt/libvirt-domain.h @@ -2230,6 +2230,15 @@ void virDomainStatsRecordListFree(virDomainStatsRecordPtr *stats); */ # define VIR_PERF_PARAM_CONTEXT_SWITCHES "context_switches" +/** + * VIR_PERF_PARAM_CPU_MIGRATIONS: + * + * Macro for typed parameter name that represents cpu_migrations + * perf event which can be used to measure the count of cpu + * migrations by applications running on the platform. It corresponds + * to the "perf.cpu_migrations" field in the *Stats APIs. + */ +# define VIR_PERF_PARAM_CPU_MIGRATIONS "cpu_migrations" int virDomainGetPerfEvents(virDomainPtr dom, virTypedParameterPtr *params, diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index 6b29d14..27be5cd 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -11259,6 +11259,10 @@ virConnectGetDomainCapabilities(virConnectPtr conn, * "perf.context_switches" - The count of context switches as unsigned long * long. It is produced by the context_switches * perf event. + * "perf.cpu_migrations" - The count of cpu migrations, from one logical + * processor to another, as unsigned long + * long. It is produced by the cpu_migrations + * 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 diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 8d6df1a..640d06b 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -9573,6 +9573,7 @@ qemuDomainSetPerfEvents(virDomainPtr dom, VIR_PERF_PARAM_TASK_CLOCK, VIR_TYPED_PARAM_BOOLEAN, VIR_PERF_PARAM_PAGE_FAULTS, VIR_TYPED_PARAM_BOOLEAN, VIR_PERF_PARAM_CONTEXT_SWITCHES, VIR_TYPED_PARAM_BOOLEAN, + VIR_PERF_PARAM_CPU_MIGRATIONS, VIR_TYPED_PARAM_BOOLEAN, NULL) < 0) return -1; diff --git a/src/util/virperf.c b/src/util/virperf.c index ba81e08..0127c82 100644 --- a/src/util/virperf.c +++ b/src/util/virperf.c @@ -45,7 +45,7 @@ VIR_ENUM_IMPL(virPerfEvent, VIR_PERF_EVENT_LAST, "bus_cycles", "stalled_cycles_frontend", "stalled_cycles_backend", "ref_cpu_cycles", "cpu_clock", "task_clock", "page_faults", - "context_switches"); + "context_switches", "cpu_migrations"); struct virPerfEvent { int type; @@ -126,6 +126,9 @@ static struct virPerfEventAttr attrs[] = { {.type = VIR_PERF_EVENT_CONTEXT_SWITCHES, .attrType = PERF_TYPE_SOFTWARE, .attrConfig = PERF_COUNT_SW_CONTEXT_SWITCHES}, + {.type = VIR_PERF_EVENT_CPU_MIGRATIONS, + .attrType = PERF_TYPE_SOFTWARE, + .attrConfig = PERF_COUNT_SW_CPU_MIGRATIONS}, }; typedef struct virPerfEventAttr *virPerfEventAttrPtr; diff --git a/src/util/virperf.h b/src/util/virperf.h index 2adc549..90ae007 100644 --- a/src/util/virperf.h +++ b/src/util/virperf.h @@ -51,6 +51,7 @@ typedef enum { VIR_PERF_EVENT_TASK_CLOCK, /* Count of task clock time*/ VIR_PERF_EVENT_PAGE_FAULTS, /* Count of total page faults */ VIR_PERF_EVENT_CONTEXT_SWITCHES, /* Count of context switches */ + VIR_PERF_EVENT_CPU_MIGRATIONS, /* Count of cpu migrations */ VIR_PERF_EVENT_LAST } virPerfEventType; diff --git a/tests/genericxml2xmlindata/generic-perf.xml b/tests/genericxml2xmlindata/generic-perf.xml index 29a2273..f856318 100644 --- a/tests/genericxml2xmlindata/generic-perf.xml +++ b/tests/genericxml2xmlindata/generic-perf.xml @@ -30,6 +30,7 @@ <event name='task_clock' enabled='yes'/> <event name='page_faults' enabled='yes'/> <event name='context_switches' enabled='yes'/> + <event name='cpu_migrations' enabled='yes'/> </perf> <devices> </devices> diff --git a/tools/virsh.pod b/tools/virsh.pod index eb7c255..65532b9 100644 --- a/tools/virsh.pod +++ b/tools/virsh.pod @@ -968,6 +968,7 @@ I<--perf> returns the statistics of all enabled perf events: "perf.task_clock" - the count of task clock time "perf.page_faults" - the count of page faults "perf.context_switches" - the count of context switches. + "perf.cpu_migrations" - the count of cpu migrations See the B<perf> command for more details about each event. @@ -2345,6 +2346,8 @@ B<Valid perf event names> applications running on the platform context_switches - Provides the count of context switches by applications running on the platform + cpu_migrations - Provides the count cpu migrations by + applications running on the platform B<Note>: The statistics can be retrieved using the B<domstats> command using the I<--perf> flag. -- 1.9.3

This patch adds support and documentation for the page_faults_min perf event. Signed-off-by: Nitesh Konkar <nitkon12@linux.vnet.ibm.com> --- docs/formatdomain.html.in | 9 +++++++++ docs/schemas/domaincommon.rng | 1 + include/libvirt/libvirt-domain.h | 10 ++++++++++ src/libvirt-domain.c | 3 +++ src/qemu/qemu_driver.c | 1 + src/util/virperf.c | 6 +++++- src/util/virperf.h | 1 + tests/genericxml2xmlindata/generic-perf.xml | 1 + tools/virsh.pod | 3 +++ 9 files changed, 34 insertions(+), 1 deletion(-) diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index 49f1e5e..0d2834b 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -1941,6 +1941,7 @@ <event name='page_faults' enabled='no'/> <event name='context_switches' enabled='no'/> <event name='cpu_migrations' enabled='no'/> + <event name='page_faults_min' enabled='no'/> </perf> ... </pre> @@ -2053,6 +2054,14 @@ applications running on the platform</td> <td><code>perf.cpu_migrations</code></td> </tr> + <tr> + <td><code>page_faults_min</code></td> + <td>the count of minor page faults, that is, where the + page was present in the page cache, and therefore + the fault avoided loading it from storage, by + applications running on the platform</td> + <td><code>perf.page_faults_min</code></td> + </tr> </table> <h3><a name="elementsDevices">Devices</a></h3> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index a14b18a..b8914d5 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -438,6 +438,7 @@ <value>page_faults</value> <value>context_switches</value> <value>cpu_migrations</value> + <value>page_faults_min</value> </choice> </attribute> <attribute name="enabled"> diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h index 7e24f50..b7e6c71 100644 --- a/include/libvirt/libvirt-domain.h +++ b/include/libvirt/libvirt-domain.h @@ -2240,6 +2240,16 @@ void virDomainStatsRecordListFree(virDomainStatsRecordPtr *stats); */ # define VIR_PERF_PARAM_CPU_MIGRATIONS "cpu_migrations" +/** + * VIR_PERF_PARAM_PAGE_FAULTS_MIN: + * + * Macro for typed parameter name that represents page_faults_min + * perf event which can be used to measure the count of minor page + * faults by applications running on the platform. It corresponds + * to the "perf.page_faults_min" field in the *Stats APIs. + */ +# define VIR_PERF_PARAM_PAGE_FAULTS_MIN "page_faults_min" + int virDomainGetPerfEvents(virDomainPtr dom, virTypedParameterPtr *params, int *nparams, diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index 27be5cd..2e95532 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -11263,6 +11263,9 @@ virConnectGetDomainCapabilities(virConnectPtr conn, * processor to another, as unsigned long * long. It is produced by the cpu_migrations * perf event. + * "perf.page_faults_min" - The count of minor page faults as unsigned + * long long. It is produced by the + * page_faults_min 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 diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 640d06b..8523e1f 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -9574,6 +9574,7 @@ qemuDomainSetPerfEvents(virDomainPtr dom, VIR_PERF_PARAM_PAGE_FAULTS, VIR_TYPED_PARAM_BOOLEAN, VIR_PERF_PARAM_CONTEXT_SWITCHES, VIR_TYPED_PARAM_BOOLEAN, VIR_PERF_PARAM_CPU_MIGRATIONS, VIR_TYPED_PARAM_BOOLEAN, + VIR_PERF_PARAM_PAGE_FAULTS_MIN, VIR_TYPED_PARAM_BOOLEAN, NULL) < 0) return -1; diff --git a/src/util/virperf.c b/src/util/virperf.c index 0127c82..9e41df9 100644 --- a/src/util/virperf.c +++ b/src/util/virperf.c @@ -45,7 +45,8 @@ VIR_ENUM_IMPL(virPerfEvent, VIR_PERF_EVENT_LAST, "bus_cycles", "stalled_cycles_frontend", "stalled_cycles_backend", "ref_cpu_cycles", "cpu_clock", "task_clock", "page_faults", - "context_switches", "cpu_migrations"); + "context_switches", "cpu_migrations", + "page_faults_min"); struct virPerfEvent { int type; @@ -129,6 +130,9 @@ static struct virPerfEventAttr attrs[] = { {.type = VIR_PERF_EVENT_CPU_MIGRATIONS, .attrType = PERF_TYPE_SOFTWARE, .attrConfig = PERF_COUNT_SW_CPU_MIGRATIONS}, + {.type = VIR_PERF_EVENT_PAGE_FAULTS_MIN, + .attrType = PERF_TYPE_SOFTWARE, + .attrConfig = PERF_COUNT_SW_PAGE_FAULTS_MIN}, }; typedef struct virPerfEventAttr *virPerfEventAttrPtr; diff --git a/src/util/virperf.h b/src/util/virperf.h index 90ae007..aa90273 100644 --- a/src/util/virperf.h +++ b/src/util/virperf.h @@ -52,6 +52,7 @@ typedef enum { VIR_PERF_EVENT_PAGE_FAULTS, /* Count of total page faults */ VIR_PERF_EVENT_CONTEXT_SWITCHES, /* Count of context switches */ VIR_PERF_EVENT_CPU_MIGRATIONS, /* Count of cpu migrations */ + VIR_PERF_EVENT_PAGE_FAULTS_MIN, /* Count of minor page faults */ VIR_PERF_EVENT_LAST } virPerfEventType; diff --git a/tests/genericxml2xmlindata/generic-perf.xml b/tests/genericxml2xmlindata/generic-perf.xml index f856318..62ad973 100644 --- a/tests/genericxml2xmlindata/generic-perf.xml +++ b/tests/genericxml2xmlindata/generic-perf.xml @@ -31,6 +31,7 @@ <event name='page_faults' enabled='yes'/> <event name='context_switches' enabled='yes'/> <event name='cpu_migrations' enabled='yes'/> + <event name='page_faults_min' enabled='yes'/> </perf> <devices> </devices> diff --git a/tools/virsh.pod b/tools/virsh.pod index 65532b9..6194aaf 100644 --- a/tools/virsh.pod +++ b/tools/virsh.pod @@ -969,6 +969,7 @@ I<--perf> returns the statistics of all enabled perf events: "perf.page_faults" - the count of page faults "perf.context_switches" - the count of context switches. "perf.cpu_migrations" - the count of cpu migrations + "perf.page_faults_min" - the count of minor page faults See the B<perf> command for more details about each event. @@ -2348,6 +2349,8 @@ B<Valid perf event names> by applications running on the platform cpu_migrations - Provides the count cpu migrations by applications running on the platform + page_faults_min - Provides the count minor page faults + by applications running on the platform B<Note>: The statistics can be retrieved using the B<domstats> command using the I<--perf> flag. -- 1.9.3

This patch adds support and documentation for the page_faults_maj perf event. Signed-off-by: Nitesh Konkar <nitkon12@linux.vnet.ibm.com> --- docs/formatdomain.html.in | 9 +++++++++ docs/schemas/domaincommon.rng | 1 + include/libvirt/libvirt-domain.h | 10 ++++++++++ src/libvirt-domain.c | 3 +++ src/qemu/qemu_driver.c | 1 + src/util/virperf.c | 5 ++++- src/util/virperf.h | 1 + tests/genericxml2xmlindata/generic-perf.xml | 1 + tools/virsh.pod | 3 +++ 9 files changed, 33 insertions(+), 1 deletion(-) diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index 0d2834b..3d94441 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -1942,6 +1942,7 @@ <event name='context_switches' enabled='no'/> <event name='cpu_migrations' enabled='no'/> <event name='page_faults_min' enabled='no'/> + <event name='page_faults_maj' enabled='no'/> </perf> ... </pre> @@ -2062,6 +2063,14 @@ applications running on the platform</td> <td><code>perf.page_faults_min</code></td> </tr> + <tr> + <td><code>page_faults_maj</code></td> + <td>the count of major page faults, that is, where the + page was not present in the page cache, and + therefore had to be fetched from storage, by + applications running on the platform</td> + <td><code>perf.page_faults_maj</code></td> + </tr> </table> <h3><a name="elementsDevices">Devices</a></h3> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index b8914d5..82327c6 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -439,6 +439,7 @@ <value>context_switches</value> <value>cpu_migrations</value> <value>page_faults_min</value> + <value>page_faults_maj</value> </choice> </attribute> <attribute name="enabled"> diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h index b7e6c71..f6e5c5a 100644 --- a/include/libvirt/libvirt-domain.h +++ b/include/libvirt/libvirt-domain.h @@ -2250,6 +2250,16 @@ void virDomainStatsRecordListFree(virDomainStatsRecordPtr *stats); */ # define VIR_PERF_PARAM_PAGE_FAULTS_MIN "page_faults_min" +/** + * VIR_PERF_PARAM_PAGE_FAULTS_MAJ: + * + * Macro for typed parameter name that represents page_faults_maj + * perf event which can be used to measure the count of major page + * faults by applications running on the platform. It corresponds + * to the "perf.page_faults_maj" field in the *Stats APIs. + */ +# define VIR_PERF_PARAM_PAGE_FAULTS_MAJ "page_faults_maj" + int virDomainGetPerfEvents(virDomainPtr dom, virTypedParameterPtr *params, int *nparams, diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index 2e95532..21f91de 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -11266,6 +11266,9 @@ virConnectGetDomainCapabilities(virConnectPtr conn, * "perf.page_faults_min" - The count of minor page faults as unsigned * long long. It is produced by the * page_faults_min perf event. + * "perf.page_faults_maj" - The count of major page faults as unsigned + * long long. It is produced by the + * page_faults_maj 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 diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 8523e1f..5448119 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -9575,6 +9575,7 @@ qemuDomainSetPerfEvents(virDomainPtr dom, VIR_PERF_PARAM_CONTEXT_SWITCHES, VIR_TYPED_PARAM_BOOLEAN, VIR_PERF_PARAM_CPU_MIGRATIONS, VIR_TYPED_PARAM_BOOLEAN, VIR_PERF_PARAM_PAGE_FAULTS_MIN, VIR_TYPED_PARAM_BOOLEAN, + VIR_PERF_PARAM_PAGE_FAULTS_MAJ, VIR_TYPED_PARAM_BOOLEAN, NULL) < 0) return -1; diff --git a/src/util/virperf.c b/src/util/virperf.c index 9e41df9..b3dd5c7 100644 --- a/src/util/virperf.c +++ b/src/util/virperf.c @@ -46,7 +46,7 @@ VIR_ENUM_IMPL(virPerfEvent, VIR_PERF_EVENT_LAST, "stalled_cycles_backend", "ref_cpu_cycles", "cpu_clock", "task_clock", "page_faults", "context_switches", "cpu_migrations", - "page_faults_min"); + "page_faults_min", "page_faults_maj"); struct virPerfEvent { int type; @@ -133,6 +133,9 @@ static struct virPerfEventAttr attrs[] = { {.type = VIR_PERF_EVENT_PAGE_FAULTS_MIN, .attrType = PERF_TYPE_SOFTWARE, .attrConfig = PERF_COUNT_SW_PAGE_FAULTS_MIN}, + {.type = VIR_PERF_EVENT_PAGE_FAULTS_MAJ, + .attrType = PERF_TYPE_SOFTWARE, + .attrConfig = PERF_COUNT_SW_PAGE_FAULTS_MAJ}, }; typedef struct virPerfEventAttr *virPerfEventAttrPtr; diff --git a/src/util/virperf.h b/src/util/virperf.h index aa90273..49d4ba7 100644 --- a/src/util/virperf.h +++ b/src/util/virperf.h @@ -53,6 +53,7 @@ typedef enum { VIR_PERF_EVENT_CONTEXT_SWITCHES, /* Count of context switches */ VIR_PERF_EVENT_CPU_MIGRATIONS, /* Count of cpu migrations */ VIR_PERF_EVENT_PAGE_FAULTS_MIN, /* Count of minor page faults */ + VIR_PERF_EVENT_PAGE_FAULTS_MAJ, /* Count of major page faults */ VIR_PERF_EVENT_LAST } virPerfEventType; diff --git a/tests/genericxml2xmlindata/generic-perf.xml b/tests/genericxml2xmlindata/generic-perf.xml index 62ad973..a5b6dfb 100644 --- a/tests/genericxml2xmlindata/generic-perf.xml +++ b/tests/genericxml2xmlindata/generic-perf.xml @@ -32,6 +32,7 @@ <event name='context_switches' enabled='yes'/> <event name='cpu_migrations' enabled='yes'/> <event name='page_faults_min' enabled='yes'/> + <event name='page_faults_maj' enabled='yes'/> </perf> <devices> </devices> diff --git a/tools/virsh.pod b/tools/virsh.pod index 6194aaf..18282f8 100644 --- a/tools/virsh.pod +++ b/tools/virsh.pod @@ -970,6 +970,7 @@ I<--perf> returns the statistics of all enabled perf events: "perf.context_switches" - the count of context switches. "perf.cpu_migrations" - the count of cpu migrations "perf.page_faults_min" - the count of minor page faults + "perf.page_faults_maj" - the count of major page faults See the B<perf> command for more details about each event. @@ -2351,6 +2352,8 @@ B<Valid perf event names> applications running on the platform page_faults_min - Provides the count minor page faults by applications running on the platform + page_faults_maj - Provides the count major page faults + by applications running on the platform B<Note>: The statistics can be retrieved using the B<domstats> command using the I<--perf> flag. -- 1.9.3

This patch adds support and documentation for the alignment_faults perf event. Signed-off-by: Nitesh Konkar <nitkon12@linux.vnet.ibm.com> --- docs/formatdomain.html.in | 8 ++++++++ docs/schemas/domaincommon.rng | 1 + include/libvirt/libvirt-domain.h | 10 ++++++++++ src/libvirt-domain.c | 3 +++ src/qemu/qemu_driver.c | 1 + src/util/virperf.c | 6 +++++- src/util/virperf.h | 1 + tests/genericxml2xmlindata/generic-perf.xml | 1 + tools/virsh.pod | 3 +++ 9 files changed, 33 insertions(+), 1 deletion(-) diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index 3d94441..3761a5d 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -1943,6 +1943,7 @@ <event name='cpu_migrations' enabled='no'/> <event name='page_faults_min' enabled='no'/> <event name='page_faults_maj' enabled='no'/> + <event name='alignment_faults' enabled='no'/> </perf> ... </pre> @@ -2071,6 +2072,13 @@ applications running on the platform</td> <td><code>perf.page_faults_maj</code></td> </tr> + <tr> + <td><code>alignment_faults</code></td> + <td>the count of alignment faults, that is when + the load or store is not aligned properly, by + applications running on the platform</td> + <td><code>perf.alignment_faults</code></td> + </tr> </table> <h3><a name="elementsDevices">Devices</a></h3> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index 82327c6..1f0c729 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -440,6 +440,7 @@ <value>cpu_migrations</value> <value>page_faults_min</value> <value>page_faults_maj</value> + <value>alignment_faults</value> </choice> </attribute> <attribute name="enabled"> diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h index f6e5c5a..0c0fb18 100644 --- a/include/libvirt/libvirt-domain.h +++ b/include/libvirt/libvirt-domain.h @@ -2260,6 +2260,16 @@ void virDomainStatsRecordListFree(virDomainStatsRecordPtr *stats); */ # define VIR_PERF_PARAM_PAGE_FAULTS_MAJ "page_faults_maj" +/** + * VIR_PERF_PARAM_ALIGNMENT_FAULTS: + * + * Macro for typed parameter name that represents alignment_faults + * perf event which can be used to measure the count of alignment + * faults by applications running on the platform. It corresponds + * to the "perf.alignment_faults" field in the *Stats APIs. + */ +# define VIR_PERF_PARAM_ALIGNMENT_FAULTS "alignment_faults" + int virDomainGetPerfEvents(virDomainPtr dom, virTypedParameterPtr *params, int *nparams, diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index 21f91de..336e172 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -11269,6 +11269,9 @@ virConnectGetDomainCapabilities(virConnectPtr conn, * "perf.page_faults_maj" - The count of major page faults as unsigned * long long. It is produced by the * page_faults_maj perf event. + * "perf.alignment_faults" - The count of alignment faults as unsigned + * long long. It is produced by the + * alignment_faults 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 diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 5448119..c58c7b0 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -9576,6 +9576,7 @@ qemuDomainSetPerfEvents(virDomainPtr dom, VIR_PERF_PARAM_CPU_MIGRATIONS, VIR_TYPED_PARAM_BOOLEAN, VIR_PERF_PARAM_PAGE_FAULTS_MIN, VIR_TYPED_PARAM_BOOLEAN, VIR_PERF_PARAM_PAGE_FAULTS_MAJ, VIR_TYPED_PARAM_BOOLEAN, + VIR_PERF_PARAM_ALIGNMENT_FAULTS, VIR_TYPED_PARAM_BOOLEAN, NULL) < 0) return -1; diff --git a/src/util/virperf.c b/src/util/virperf.c index b3dd5c7..3f01596 100644 --- a/src/util/virperf.c +++ b/src/util/virperf.c @@ -46,7 +46,8 @@ VIR_ENUM_IMPL(virPerfEvent, VIR_PERF_EVENT_LAST, "stalled_cycles_backend", "ref_cpu_cycles", "cpu_clock", "task_clock", "page_faults", "context_switches", "cpu_migrations", - "page_faults_min", "page_faults_maj"); + "page_faults_min", "page_faults_maj", + "alignment_faults"); struct virPerfEvent { int type; @@ -136,6 +137,9 @@ static struct virPerfEventAttr attrs[] = { {.type = VIR_PERF_EVENT_PAGE_FAULTS_MAJ, .attrType = PERF_TYPE_SOFTWARE, .attrConfig = PERF_COUNT_SW_PAGE_FAULTS_MAJ}, + {.type = VIR_PERF_EVENT_ALIGNMENT_FAULTS, + .attrType = PERF_TYPE_SOFTWARE, + .attrConfig = PERF_COUNT_SW_ALIGNMENT_FAULTS}, }; typedef struct virPerfEventAttr *virPerfEventAttrPtr; diff --git a/src/util/virperf.h b/src/util/virperf.h index 49d4ba7..4e46460 100644 --- a/src/util/virperf.h +++ b/src/util/virperf.h @@ -54,6 +54,7 @@ typedef enum { VIR_PERF_EVENT_CPU_MIGRATIONS, /* Count of cpu migrations */ VIR_PERF_EVENT_PAGE_FAULTS_MIN, /* Count of minor page faults */ VIR_PERF_EVENT_PAGE_FAULTS_MAJ, /* Count of major page faults */ + VIR_PERF_EVENT_ALIGNMENT_FAULTS, /* Count of alignment faults */ VIR_PERF_EVENT_LAST } virPerfEventType; diff --git a/tests/genericxml2xmlindata/generic-perf.xml b/tests/genericxml2xmlindata/generic-perf.xml index a5b6dfb..b48f96c 100644 --- a/tests/genericxml2xmlindata/generic-perf.xml +++ b/tests/genericxml2xmlindata/generic-perf.xml @@ -33,6 +33,7 @@ <event name='cpu_migrations' enabled='yes'/> <event name='page_faults_min' enabled='yes'/> <event name='page_faults_maj' enabled='yes'/> + <event name='alignment_faults' enabled='yes'/> </perf> <devices> </devices> diff --git a/tools/virsh.pod b/tools/virsh.pod index 18282f8..123b701 100644 --- a/tools/virsh.pod +++ b/tools/virsh.pod @@ -971,6 +971,7 @@ I<--perf> returns the statistics of all enabled perf events: "perf.cpu_migrations" - the count of cpu migrations "perf.page_faults_min" - the count of minor page faults "perf.page_faults_maj" - the count of major page faults + "perf.alignment_faults" - the count of alignment faults See the B<perf> command for more details about each event. @@ -2354,6 +2355,8 @@ B<Valid perf event names> by applications running on the platform page_faults_maj - Provides the count major page faults by applications running on the platform + alignment_faults - Provides the count alignment faults + by applications running on the platform B<Note>: The statistics can be retrieved using the B<domstats> command using the I<--perf> flag. -- 1.9.3

This patch adds support and documentation for the emulation_faults perf event. Signed-off-by: Nitesh Konkar <nitkon12@linux.vnet.ibm.com> --- docs/formatdomain.html.in | 9 +++++++++ docs/schemas/domaincommon.rng | 1 + include/libvirt/libvirt-domain.h | 10 ++++++++++ src/libvirt-domain.c | 3 +++ src/qemu/qemu_driver.c | 1 + src/util/virperf.c | 5 ++++- src/util/virperf.h | 1 + tests/genericxml2xmlindata/generic-perf.xml | 1 + tools/virsh.pod | 3 +++ 9 files changed, 33 insertions(+), 1 deletion(-) diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index 3761a5d..8891ed9 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -1944,6 +1944,7 @@ <event name='page_faults_min' enabled='no'/> <event name='page_faults_maj' enabled='no'/> <event name='alignment_faults' enabled='no'/> + <event name='emulation_faults' enabled='no'/> </perf> ... </pre> @@ -2079,6 +2080,14 @@ applications running on the platform</td> <td><code>perf.alignment_faults</code></td> </tr> + <tr> + <td><code>emulation_faults</code></td> + <td>the count of emulation faults, that is when + the kernel traps on unimplemented instrucions + and emulates them for user space, by + applications running on the platform</td> + <td><code>perf.emulation_faults</code></td> + </tr> </table> <h3><a name="elementsDevices">Devices</a></h3> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index 1f0c729..1860f90 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -441,6 +441,7 @@ <value>page_faults_min</value> <value>page_faults_maj</value> <value>alignment_faults</value> + <value>emulation_faults</value> </choice> </attribute> <attribute name="enabled"> diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h index 0c0fb18..c490d71 100644 --- a/include/libvirt/libvirt-domain.h +++ b/include/libvirt/libvirt-domain.h @@ -2270,6 +2270,16 @@ void virDomainStatsRecordListFree(virDomainStatsRecordPtr *stats); */ # define VIR_PERF_PARAM_ALIGNMENT_FAULTS "alignment_faults" +/** + * VIR_PERF_PARAM_EMULATION_FAULTS: + * + * Macro for typed parameter name that represents emulation_faults + * perf event which can be used to measure the count of emulation + * faults by applications running on the platform. It corresponds + * to the "perf.emulation_faults" field in the *Stats APIs. + */ +# define VIR_PERF_PARAM_EMULATION_FAULTS "emulation_faults" + int virDomainGetPerfEvents(virDomainPtr dom, virTypedParameterPtr *params, int *nparams, diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index 336e172..5088f47 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -11272,6 +11272,9 @@ virConnectGetDomainCapabilities(virConnectPtr conn, * "perf.alignment_faults" - The count of alignment faults as unsigned * long long. It is produced by the * alignment_faults perf event + * "perf.emulation_faults" - The count of emulation faults as unsigned + * long long. It is produced by the + * emulation_faults 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 diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index c58c7b0..51d0b5f 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -9577,6 +9577,7 @@ qemuDomainSetPerfEvents(virDomainPtr dom, VIR_PERF_PARAM_PAGE_FAULTS_MIN, VIR_TYPED_PARAM_BOOLEAN, VIR_PERF_PARAM_PAGE_FAULTS_MAJ, VIR_TYPED_PARAM_BOOLEAN, VIR_PERF_PARAM_ALIGNMENT_FAULTS, VIR_TYPED_PARAM_BOOLEAN, + VIR_PERF_PARAM_EMULATION_FAULTS, VIR_TYPED_PARAM_BOOLEAN, NULL) < 0) return -1; diff --git a/src/util/virperf.c b/src/util/virperf.c index 3f01596..e39cebb 100644 --- a/src/util/virperf.c +++ b/src/util/virperf.c @@ -47,7 +47,7 @@ VIR_ENUM_IMPL(virPerfEvent, VIR_PERF_EVENT_LAST, "cpu_clock", "task_clock", "page_faults", "context_switches", "cpu_migrations", "page_faults_min", "page_faults_maj", - "alignment_faults"); + "alignment_faults", "emulation_faults"); struct virPerfEvent { int type; @@ -140,6 +140,9 @@ static struct virPerfEventAttr attrs[] = { {.type = VIR_PERF_EVENT_ALIGNMENT_FAULTS, .attrType = PERF_TYPE_SOFTWARE, .attrConfig = PERF_COUNT_SW_ALIGNMENT_FAULTS}, + {.type = VIR_PERF_EVENT_EMULATION_FAULTS, + .attrType = PERF_TYPE_SOFTWARE, + .attrConfig = PERF_COUNT_SW_EMULATION_FAULTS}, }; typedef struct virPerfEventAttr *virPerfEventAttrPtr; diff --git a/src/util/virperf.h b/src/util/virperf.h index 4e46460..eee7a03 100644 --- a/src/util/virperf.h +++ b/src/util/virperf.h @@ -55,6 +55,7 @@ typedef enum { VIR_PERF_EVENT_PAGE_FAULTS_MIN, /* Count of minor page faults */ VIR_PERF_EVENT_PAGE_FAULTS_MAJ, /* Count of major page faults */ VIR_PERF_EVENT_ALIGNMENT_FAULTS, /* Count of alignment faults */ + VIR_PERF_EVENT_EMULATION_FAULTS, /* Count of emulation faults */ VIR_PERF_EVENT_LAST } virPerfEventType; diff --git a/tests/genericxml2xmlindata/generic-perf.xml b/tests/genericxml2xmlindata/generic-perf.xml index b48f96c..457aea0 100644 --- a/tests/genericxml2xmlindata/generic-perf.xml +++ b/tests/genericxml2xmlindata/generic-perf.xml @@ -34,6 +34,7 @@ <event name='page_faults_min' enabled='yes'/> <event name='page_faults_maj' enabled='yes'/> <event name='alignment_faults' enabled='yes'/> + <event name='emulation_faults' enabled='yes'/> </perf> <devices> </devices> diff --git a/tools/virsh.pod b/tools/virsh.pod index 123b701..270b983 100644 --- a/tools/virsh.pod +++ b/tools/virsh.pod @@ -972,6 +972,7 @@ I<--perf> returns the statistics of all enabled perf events: "perf.page_faults_min" - the count of minor page faults "perf.page_faults_maj" - the count of major page faults "perf.alignment_faults" - the count of alignment faults + "perf.emulation_faults" - the count of emulation faults See the B<perf> command for more details about each event. @@ -2357,6 +2358,8 @@ B<Valid perf event names> by applications running on the platform alignment_faults - Provides the count alignment faults by applications running on the platform + emulation_faults - Provides the count emulation faults + by applications running on the platform B<Note>: The statistics can be retrieved using the B<domstats> command using the I<--perf> flag. -- 1.9.3

Signed-off-by: Nitesh Konkar <nitkon12@linux.vnet.ibm.com> --- docs/news.xml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/news.xml b/docs/news.xml index 74dfe9a..9a5f4c5 100644 --- a/docs/news.xml +++ b/docs/news.xml @@ -130,6 +130,17 @@ driver with all backends which may pull in too many dependencies. </description> </change> + <change> + <summary> + perf: Add more perf statistics + </summary> + <description> + Add support to get the count of cpu clock time, task clock time, + page faults, context switches, cpu migrations, minor page faults, + major page faults, alignment faults, emulation faults by + applications running on the platform. + </description> + </change> </section> <section title="Bug fixes"> <change> -- 1.9.3

On 02/23/2017 09:55 AM, Nitesh Konkar wrote:
This patch series adds software perf events. The perl and go patches shall follow shortly.
Nitesh Konkar (10): perf: add cpu_clock software perf event support perf: add task_clock software perf event support perf: add page_faults software perf event support perf: add context_switches software perf event support perf: add cpu_migrations software perf event support perf: add page_faults_min software perf event support perf: add page_faults_maj software perf event support perf: add alignment_faults software perf event support perf: add emulation_faults software perf event support news: Update the news.xml about perf events added
docs/formatdomain.html.in | 74 +++++++++++++++++++++++ docs/news.xml | 11 ++++ docs/schemas/domaincommon.rng | 9 +++ include/libvirt/libvirt-domain.h | 92 +++++++++++++++++++++++++++++ src/libvirt-domain.c | 25 ++++++++ src/qemu/qemu_driver.c | 9 +++ src/util/virperf.c | 33 ++++++++++- src/util/virperf.h | 9 +++ tests/genericxml2xmlindata/generic-perf.xml | 9 +++ tools/virsh.pod | 27 +++++++++ 10 files changed, 297 insertions(+), 1 deletion(-)
ACK series - altered a couple of inconsistencies w/ periods in virsh.pod and altered the news.xml to move the note into the 3.2 release. Going to wait to push this though until you provide an acceptable GO patch. John

On 03/06/2017 02:55 PM, John Ferlan wrote:
On 02/23/2017 09:55 AM, Nitesh Konkar wrote:
This patch series adds software perf events. The perl and go patches shall follow shortly.
Nitesh Konkar (10): perf: add cpu_clock software perf event support perf: add task_clock software perf event support perf: add page_faults software perf event support perf: add context_switches software perf event support perf: add cpu_migrations software perf event support perf: add page_faults_min software perf event support perf: add page_faults_maj software perf event support perf: add alignment_faults software perf event support perf: add emulation_faults software perf event support news: Update the news.xml about perf events added
docs/formatdomain.html.in | 74 +++++++++++++++++++++++ docs/news.xml | 11 ++++ docs/schemas/domaincommon.rng | 9 +++ include/libvirt/libvirt-domain.h | 92 +++++++++++++++++++++++++++++ src/libvirt-domain.c | 25 ++++++++ src/qemu/qemu_driver.c | 9 +++ src/util/virperf.c | 33 ++++++++++- src/util/virperf.h | 9 +++ tests/genericxml2xmlindata/generic-perf.xml | 9 +++ tools/virsh.pod | 27 +++++++++ 10 files changed, 297 insertions(+), 1 deletion(-)
ACK series - altered a couple of inconsistencies w/ periods in virsh.pod and altered the news.xml to move the note into the 3.2 release.
Going to wait to push this though until you provide an acceptable GO patch.
As noted elsewhere, I found the v3 GO patch. This series is now pushed.
John
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

On Wed, Mar 8, 2017 at 12:31 AM, John Ferlan <jferlan@redhat.com> wrote:
On 03/06/2017 02:55 PM, John Ferlan wrote:
On 02/23/2017 09:55 AM, Nitesh Konkar wrote:
This patch series adds software perf events. The perl and go patches shall follow shortly.
Nitesh Konkar (10): perf: add cpu_clock software perf event support perf: add task_clock software perf event support perf: add page_faults software perf event support perf: add context_switches software perf event support perf: add cpu_migrations software perf event support perf: add page_faults_min software perf event support perf: add page_faults_maj software perf event support perf: add alignment_faults software perf event support perf: add emulation_faults software perf event support news: Update the news.xml about perf events added
docs/formatdomain.html.in | 74
docs/news.xml | 11 ++++ docs/schemas/domaincommon.rng | 9 +++ include/libvirt/libvirt-domain.h | 92 +++++++++++++++++++++++++++++ src/libvirt-domain.c | 25 ++++++++ src/qemu/qemu_driver.c | 9 +++ src/util/virperf.c | 33 ++++++++++- src/util/virperf.h | 9 +++ tests/genericxml2xmlindata/generic-perf.xml | 9 +++ tools/virsh.pod | 27 +++++++++ 10 files changed, 297 insertions(+), 1 deletion(-)
ACK series - altered a couple of inconsistencies w/ periods in virsh.pod and altered the news.xml to move the note into the 3.2 release.
Going to wait to push this though until you provide an acceptable GO
+++++++++++++++++++++++ patch.
As noted elsewhere, I found the v3 GO patch.
Sorry for that. Not sure how i missed the v3 Go Patch in the subject.
This series is now pushed.
Thanks.
John
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

On Mon, Mar 06, 2017 at 02:55:18PM -0500, John Ferlan wrote:
On 02/23/2017 09:55 AM, Nitesh Konkar wrote:
This patch series adds software perf events. The perl and go patches shall follow shortly.
Nitesh Konkar (10): perf: add cpu_clock software perf event support perf: add task_clock software perf event support perf: add page_faults software perf event support perf: add context_switches software perf event support perf: add cpu_migrations software perf event support perf: add page_faults_min software perf event support perf: add page_faults_maj software perf event support perf: add alignment_faults software perf event support perf: add emulation_faults software perf event support news: Update the news.xml about perf events added
docs/formatdomain.html.in | 74 +++++++++++++++++++++++ docs/news.xml | 11 ++++ docs/schemas/domaincommon.rng | 9 +++ include/libvirt/libvirt-domain.h | 92 +++++++++++++++++++++++++++++ src/libvirt-domain.c | 25 ++++++++ src/qemu/qemu_driver.c | 9 +++ src/util/virperf.c | 33 ++++++++++- src/util/virperf.h | 9 +++ tests/genericxml2xmlindata/generic-perf.xml | 9 +++ tools/virsh.pod | 27 +++++++++ 10 files changed, 297 insertions(+), 1 deletion(-)
ACK series - altered a couple of inconsistencies w/ periods in virsh.pod and altered the news.xml to move the note into the 3.2 release.
Going to wait to push this though until you provide an acceptable GO patch.
BTW, while I very much appreciate if contributors provide a Go patch to go along with C API additions, you don't need to consider it a blocker for merging libvirt APIs. I'll simply write the Go patch myself if the contributor doesn't/can't provide one prior to merge. Likewise for Perl. Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://entangle-photo.org -o- http://search.cpan.org/~danberr/ :|
participants (3)
-
Daniel P. Berrange
-
John Ferlan
-
Nitesh Konkar