Re: [libvirt] [PATCH 1/2] perf: Compute cache_l1d config value correctly
On Sat, Jan 14, 2017 at 01:49:59PM +0530, Nitesh Konkar wrote: > This patch computes the .attrConfig value for > cache_l1d correctly and updates the documentation. > The cache_l1d perf event now is renamed as > cache_l1dra perf event for measuring read accesses > for level 1 data cache > > Signed-off-by: Nitesh Konkar> --- > docs/formatdomain.html.in | 12 ++-- > docs/news.xml | 5 +++-- > docs/schemas/domaincommon.rng | 2 +- > include/libvirt/libvirt-domain.h| 12 ++-- > src/libvirt-domain.c| 5 +++-- > src/qemu/qemu_driver.c | 2 +- > src/util/virperf.c | 8 +--- > src/util/virperf.h | 2 +- > tests/genericxml2xmlindata/generic-perf.xml | 2 +- > tools/virsh.pod | 6 +++--- > 10 files changed, 30 insertions(+), 26 deletions(-) I'm not really comfortable with us renaming the public API at this late stage of the release, as it will have a ripple effect on all the language bindings too. IMHO, we need to just stick with this event name now. > diff --git a/src/util/virperf.c b/src/util/virperf.c > index 8554723..11e64df 100644 > --- a/src/util/virperf.c > +++ b/src/util/virperf.c > @@ -113,9 +113,11 @@ static struct virPerfEventAttr attrs[] = { > .attrConfig = 0, > # endif > }, > .attrType = PERF_TYPE_HW_CACHE, > - .attrConfig = PERF_COUNT_HW_CACHE_L1D}, > + .attrConfig = (PERF_COUNT_HW_CACHE_L1D) | > + (PERF_COUNT_HW_CACHE_OP_READ << 8) | > + (PERF_COUNT_HW_CACHE_RESULT_ACCESS << 16)}, > }; So this looks like the only part of the patch that we need to take. 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/ :| -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH 1/2] perf: Compute cache_l1d config value correctly
Hello, My earlier patch with commit id : ae16c95f1bb5591c27676c5de8d383e5612c3568 (Link: https://www.redhat.com/archives/libvir-list/2017-January/msg00226.html ) computed the .attrConfig value incorrectly. The right way to compute .attrConfig value for a PERF_TYPE_HW_CACHE event is listed here ( https://linux.die.net/man/2/perf_event_open) . I somehow missed this info at the time of sending the patch and have sent another patch to rectify it. Link: https://www.redhat.com/archives/libvir-list/2017-January/msg00679.html I think this patch needs to be in before 3.0.0 is released else a wrong value shall be displayed on enabling and displaying cache_l1d perf event. Thanks, Nitesh Konkar. On Sat, Jan 14, 2017 at 1:49 PM, Nitesh Konkar < niteshkonkar.libv...@gmail.com> wrote: > This patch computes the .attrConfig value for > cache_l1d correctly and updates the documentation. > The cache_l1d perf event now is renamed as > cache_l1dra perf event for measuring read accesses > for level 1 data cache > > Signed-off-by: Nitesh Konkar> --- > docs/formatdomain.html.in | 12 ++-- > docs/news.xml | 5 +++-- > docs/schemas/domaincommon.rng | 2 +- > include/libvirt/libvirt-domain.h| 12 ++-- > src/libvirt-domain.c| 5 +++-- > src/qemu/qemu_driver.c | 2 +- > src/util/virperf.c | 8 +--- > src/util/virperf.h | 2 +- > tests/genericxml2xmlindata/generic-perf.xml | 2 +- > tools/virsh.pod | 6 +++--- > 10 files changed, 30 insertions(+), 26 deletions(-) > > diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in > index 30cb196..a8ee2db 100644 > --- a/docs/formatdomain.html.in > +++ b/docs/formatdomain.html.in > @@ -1937,7 +1937,7 @@ >event name='stalled_cycles_frontend' enabled='no'/ >event name='stalled_cycles_backend' enabled='no'/ >event name='ref_cpu_cycles' enabled='no'/ > - event name='cache_l1d' enabled='no'/ > + event name='cache_l1dra' enabled='no'/ > /perf > ... > > @@ -2013,14 +2013,14 @@ > >ref_cpu_cycles >the count of total cpu cycles not affected by CPU frequency > scaling > - by applications running on the platform > + by applications running on the platform >perf.ref_cpu_cycles > > > - cache_l1d > - the count of total level 1 data cache by applications running on > - the platform > - perf.cache_l1d > + cache_l1dra > + the count of total read accesses for level 1 data cache by > + applications running on the platform > + perf.cache_l1dra > > > > diff --git a/docs/news.xml b/docs/news.xml > index baafcff..93ab40c 100644 > --- a/docs/news.xml > +++ b/docs/news.xml > @@ -82,8 +82,9 @@ > >Add support to get the count of branch instructions >executed, branch misses, bus cycles, stalled frontend > - cpu cycles, stalled backend cpu cycles, and ref cpu > - cycles by applications running on the platform. > + cpu cycles, stalled backend cpu cycles, ref cpu > + cycles and cache l1dra by applications running on the > + platform. > > > > diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng > index be0a609..a65ad13 100644 > --- a/docs/schemas/domaincommon.rng > +++ b/docs/schemas/domaincommon.rng > @@ -433,7 +433,7 @@ >stalled_cycles_frontend >stalled_cycles_backend >ref_cpu_cycles > - cache_l1d > + cache_l1dra > > > > diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt- > domain.h > index 1e0e74c..3da0e9b 100644 > --- a/include/libvirt/libvirt-domain.h > +++ b/include/libvirt/libvirt-domain.h > @@ -2189,15 +2189,15 @@ void > virDomainStatsRecordListFree(virDomainStatsRecordPtr > *stats); > # define VIR_PERF_PARAM_REF_CPU_CYCLES "ref_cpu_cycles" > > /** > - * VIR_PERF_PARAM_CACHE_L1D: > + * VIR_PERF_PARAM_CACHE_L1DRA: > * > - * Macro for typed parameter name that represents cache_l1d > + * Macro for typed parameter name that represents cache_l1dra > * perf event which can be used to measure the count of total > - * level 1 data cache by applications running on the platform. > - * It corresponds to the "perf.cache_l1d" field in the > - * *Stats APIs. > + * read accesses for level 1 data cache by applications running > + * on the platform. It corresponds to the "perf.cache_l1dra" > + * field in the *Stats APIs. > */ > -# define VIR_PERF_PARAM_CACHE_L1D "cache_l1d" > +# define VIR_PERF_PARAM_CACHE_L1DRA "cache_l1dra" > > int virDomainGetPerfEvents(virDomainPtr dom, > virTypedParameterPtr *params, > diff --git
[libvirt] [PATCH 1/2] perf: Compute cache_l1d config value correctly
This patch computes the .attrConfig value for cache_l1d correctly and updates the documentation. The cache_l1d perf event now is renamed as cache_l1dra perf event for measuring read accesses for level 1 data cache Signed-off-by: Nitesh Konkar--- docs/formatdomain.html.in | 12 ++-- docs/news.xml | 5 +++-- docs/schemas/domaincommon.rng | 2 +- include/libvirt/libvirt-domain.h| 12 ++-- src/libvirt-domain.c| 5 +++-- src/qemu/qemu_driver.c | 2 +- src/util/virperf.c | 8 +--- src/util/virperf.h | 2 +- tests/genericxml2xmlindata/generic-perf.xml | 2 +- tools/virsh.pod | 6 +++--- 10 files changed, 30 insertions(+), 26 deletions(-) diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index 30cb196..a8ee2db 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -1937,7 +1937,7 @@ event name='stalled_cycles_frontend' enabled='no'/ event name='stalled_cycles_backend' enabled='no'/ event name='ref_cpu_cycles' enabled='no'/ - event name='cache_l1d' enabled='no'/ + event name='cache_l1dra' enabled='no'/ /perf ... @@ -2013,14 +2013,14 @@ ref_cpu_cycles the count of total cpu cycles not affected by CPU frequency scaling - by applications running on the platform + by applications running on the platform perf.ref_cpu_cycles - cache_l1d - the count of total level 1 data cache by applications running on - the platform - perf.cache_l1d + cache_l1dra + the count of total read accesses for level 1 data cache by + applications running on the platform + perf.cache_l1dra diff --git a/docs/news.xml b/docs/news.xml index baafcff..93ab40c 100644 --- a/docs/news.xml +++ b/docs/news.xml @@ -82,8 +82,9 @@ Add support to get the count of branch instructions executed, branch misses, bus cycles, stalled frontend - cpu cycles, stalled backend cpu cycles, and ref cpu - cycles by applications running on the platform. + cpu cycles, stalled backend cpu cycles, ref cpu + cycles and cache l1dra by applications running on the + platform. diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index be0a609..a65ad13 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -433,7 +433,7 @@ stalled_cycles_frontend stalled_cycles_backend ref_cpu_cycles - cache_l1d + cache_l1dra diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h index 1e0e74c..3da0e9b 100644 --- a/include/libvirt/libvirt-domain.h +++ b/include/libvirt/libvirt-domain.h @@ -2189,15 +2189,15 @@ void virDomainStatsRecordListFree(virDomainStatsRecordPtr *stats); # define VIR_PERF_PARAM_REF_CPU_CYCLES "ref_cpu_cycles" /** - * VIR_PERF_PARAM_CACHE_L1D: + * VIR_PERF_PARAM_CACHE_L1DRA: * - * Macro for typed parameter name that represents cache_l1d + * Macro for typed parameter name that represents cache_l1dra * perf event which can be used to measure the count of total - * level 1 data cache by applications running on the platform. - * It corresponds to the "perf.cache_l1d" field in the - * *Stats APIs. + * read accesses for level 1 data cache by applications running + * on the platform. It corresponds to the "perf.cache_l1dra" + * field in the *Stats APIs. */ -# define VIR_PERF_PARAM_CACHE_L1D "cache_l1d" +# define VIR_PERF_PARAM_CACHE_L1DRA "cache_l1dra" int virDomainGetPerfEvents(virDomainPtr dom, virTypedParameterPtr *params, diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index 3023f30..fa39069 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -11250,8 +11250,9 @@ virConnectGetDomainCapabilities(virConnectPtr conn, * CPU frequency scaling by applications running * as unsigned long long. It is produced by the * ref_cpu_cycles perf event. - * "perf.cache_l1d" - The count of total level 1 data cache as unsigned - *long long. It is produced by cache_l1d perf event. + * "perf.cache_l1dra" - The count of total read accesses for level 1 data + * cache as unsigned long long. It is produced by + * cache_l1dra 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 42f9889..7e2ea96