perf kvm: Do guest-only counting by default
Make use of exclude_guest and exlude_host in perf-kvm to do only guest-only counting by default. Cc: Gleb Natapov <gleb@redhat.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Joerg Roedel <joro@8bytes.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Signed-off-by: Gleb Natapov <gleb@redhat.com> Signed-off-by: Joerg Roedel <joerg.roedel@amd.com> [ committer note: Moved perf_{guest,host} & event_attr_init to util.c ] [ so as not to drag more stuff to the python binding] Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
df25f989a4
commit
1aed267173
|
@ -22,9 +22,6 @@
|
||||||
static const char *file_name;
|
static const char *file_name;
|
||||||
static char name_buffer[256];
|
static char name_buffer[256];
|
||||||
|
|
||||||
bool perf_host = 1;
|
|
||||||
bool perf_guest;
|
|
||||||
|
|
||||||
static const char * const kvm_usage[] = {
|
static const char * const kvm_usage[] = {
|
||||||
"perf kvm [<options>] {top|record|report|diff|buildid-list}",
|
"perf kvm [<options>] {top|record|report|diff|buildid-list}",
|
||||||
NULL
|
NULL
|
||||||
|
@ -107,7 +104,8 @@ static int __cmd_buildid_list(int argc, const char **argv)
|
||||||
|
|
||||||
int cmd_kvm(int argc, const char **argv, const char *prefix __used)
|
int cmd_kvm(int argc, const char **argv, const char *prefix __used)
|
||||||
{
|
{
|
||||||
perf_host = perf_guest = 0;
|
perf_host = 0;
|
||||||
|
perf_guest = 1;
|
||||||
|
|
||||||
argc = parse_options(argc, argv, kvm_options, kvm_usage,
|
argc = parse_options(argc, argv, kvm_options, kvm_usage,
|
||||||
PARSE_OPT_STOP_AT_NON_OPTION);
|
PARSE_OPT_STOP_AT_NON_OPTION);
|
||||||
|
|
|
@ -111,8 +111,11 @@ int perf_evlist__add_default(struct perf_evlist *evlist)
|
||||||
.type = PERF_TYPE_HARDWARE,
|
.type = PERF_TYPE_HARDWARE,
|
||||||
.config = PERF_COUNT_HW_CPU_CYCLES,
|
.config = PERF_COUNT_HW_CPU_CYCLES,
|
||||||
};
|
};
|
||||||
struct perf_evsel *evsel = perf_evsel__new(&attr, 0);
|
struct perf_evsel *evsel;
|
||||||
|
|
||||||
|
event_attr_init(&attr);
|
||||||
|
|
||||||
|
evsel = perf_evsel__new(&attr, 0);
|
||||||
if (evsel == NULL)
|
if (evsel == NULL)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
|
|
|
@ -838,6 +838,7 @@ int parse_events(struct perf_evlist *evlist , const char *str, int unset __used)
|
||||||
for (;;) {
|
for (;;) {
|
||||||
ostr = str;
|
ostr = str;
|
||||||
memset(&attr, 0, sizeof(attr));
|
memset(&attr, 0, sizeof(attr));
|
||||||
|
event_attr_init(&attr);
|
||||||
ret = parse_event_symbols(evlist, &str, &attr);
|
ret = parse_event_symbols(evlist, &str, &attr);
|
||||||
if (ret == EVT_FAILED)
|
if (ret == EVT_FAILED)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
@ -1,6 +1,21 @@
|
||||||
|
#include "../perf.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* XXX We need to find a better place for these things...
|
||||||
|
*/
|
||||||
|
bool perf_host = true;
|
||||||
|
bool perf_guest = true;
|
||||||
|
|
||||||
|
void event_attr_init(struct perf_event_attr *attr)
|
||||||
|
{
|
||||||
|
if (!perf_host)
|
||||||
|
attr->exclude_host = 1;
|
||||||
|
if (!perf_guest)
|
||||||
|
attr->exclude_guest = 1;
|
||||||
|
}
|
||||||
|
|
||||||
int mkdir_p(char *path, mode_t mode)
|
int mkdir_p(char *path, mode_t mode)
|
||||||
{
|
{
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
|
|
@ -242,6 +242,10 @@ int strtailcmp(const char *s1, const char *s2);
|
||||||
unsigned long convert_unit(unsigned long value, char *unit);
|
unsigned long convert_unit(unsigned long value, char *unit);
|
||||||
int readn(int fd, void *buf, size_t size);
|
int readn(int fd, void *buf, size_t size);
|
||||||
|
|
||||||
|
struct perf_event_attr;
|
||||||
|
|
||||||
|
void event_attr_init(struct perf_event_attr *attr);
|
||||||
|
|
||||||
#define _STR(x) #x
|
#define _STR(x) #x
|
||||||
#define STR(x) _STR(x)
|
#define STR(x) _STR(x)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue