All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Ahern <dsahern@gmail.com>
To: Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>
Cc: acme@ghostprotocols.net, linux-kernel@vger.kernel.org,
	Ingo Molnar <mingo@kernel.org>,
	Frederic Weisbecker <fweisbec@gmail.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Jiri Olsa <jolsa@redhat.com>, Namhyung Kim <namhyung@kernel.org>,
	Runzhen Wang <runzhen@linux.vnet.ibm.com>
Subject: Re: [PATCH 5/9] perf kvm: add live mode - v3
Date: Mon, 05 Aug 2013 10:43:12 -0400	[thread overview]
Message-ID: <51FFBA00.4070801@gmail.com> (raw)
In-Reply-To: <51FF3DDA.6080108@linux.vnet.ibm.com>

On 8/5/13 1:53 AM, Xiao Guangrong wrote:
> Hi David,
>
> Thanks for your nice job! I got some questions.
>
> On 08/03/2013 04:05 AM, David Ahern wrote:
>
>>   static int kvm_events_hash_fn(u64 key)
>>   {
>>   	return key & (EVENTS_CACHE_SIZE - 1);
>> @@ -472,7 +501,11 @@ static bool handle_end_event(struct perf_kvm_stat *kvm,
>>   	vcpu_record->last_event = NULL;
>>   	vcpu_record->start_time = 0;
>>
>> -	BUG_ON(timestamp < time_begin);
>> +	/* seems to happen once in a while during live mode */
>> +	if (timestamp < time_begin) {
>> +		pr_debug("End time before begin time; skipping event.\n");
>> +		return true;
>> +	}
>
> No idea why it can happen. :(

I saw it triggering quite often early on (last Fall when I started this) 
and I changed the BUG_ON to keep going and get the command working. It 
needs to be revisited and figured out why an end event comes before a 
begin event - might be a start up problem only. But as a start point did 
not seem to hurt to just ignore the sample.

>
>> +static bool verify_vcpu(int vcpu)
>> +{
>> +	int nr_cpus;
>> +
>> +	if (vcpu != -1 && vcpu < 0) {
>> +		pr_err("Invalid vcpu:%d.\n", vcpu);
>> +		return false;
>> +	}
>> +
>> +	nr_cpus = sysconf(_SC_NPROCESSORS_ONLN);
>> +	if ((nr_cpus > 0) && (vcpu > nr_cpus - 1)) {
>> +		pr_err("Invalid vcpu:%d.\n", vcpu);
>> +		return false;
>> +	}
>
> Hmm, kvm can use more vcpus than the cpus on host.

Good point. I'll fix.

>
>> +static int kvm_events_live(struct perf_kvm_stat *kvm,
>> +			   int argc, const char **argv)
>> +{
>> +	char errbuf[BUFSIZ];
>> +	int err;
>> +
>> +	const struct option live_options[] = {
>> +		OPT_STRING('p', "pid", &kvm->opts.target.pid, "pid",
>> +			"record events on existing process id"),
>> +		OPT_STRING('t', "tid", &kvm->opts.target.tid, "tid",
>> +			"record events on existing thread id"),
>> +		OPT_STRING('C', "cpu", &kvm->opts.target.cpu_list, "cpu",
>> +			"list of host cpus to monitor"),
>> +		OPT_UINTEGER('m', "mmap-pages", &kvm->opts.mmap_pages,
>> +			"number of mmap data pages"),
>> +		OPT_INCR('v', "verbose", &verbose,
>> +			"be more verbose (show counter open errors, etc)"),
>> +		OPT_BOOLEAN('a', "all-cpus", &kvm->opts.target.system_wide,
>> +			"system-wide collection from all CPUs"),
>> +		OPT_UINTEGER('d', "display", &kvm->display_time,
>> +			"time in seconds between display updates"),
>> +		OPT_STRING(0, "event", &kvm->report_event, "report event",
>> +			"event for reporting: vmexit, mmio, ioport"),
>> +		OPT_INTEGER(0, "vcpu", &kvm->trace_vcpu,
>> +			"vcpu id to report"),
>> +		OPT_STRING('k', "key", &kvm->sort_key, "sort-key",
>> +			"key for sorting: sample(sort by samples number)"
>> +			" time (sort by avg time)"),
>
> Why we have so many parameters used for tracking. For KVM, we only need to know
> 1) which guest is tracked and 2) which vcpu in the guest is tracked and 3) what
> kind of events. no?

I should drop the cpu_list argument and tid is the same as vcpu so I can 
drop it. 'a' is implicit if pid is not given.

mmap-pages is definitely needed: a LOT of tracepoints get generated.

I'll update.

David

  reply	other threads:[~2013-08-05 14:43 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-02 20:05 [PATCH 0/9] perf: kvm live mode David Ahern
2013-08-02 20:05 ` [PATCH 1/9] perf top: move CONSOLE_CLEAR to header file David Ahern
2013-08-12 10:19   ` [tip:perf/core] " tip-bot for David Ahern
2013-08-02 20:05 ` [PATCH 2/9] perf stats: add max and min stats David Ahern
2013-08-05  6:02   ` Xiao Guangrong
2013-08-12 10:19   ` [tip:perf/core] perf stats: Add " tip-bot for David Ahern
2013-08-02 20:05 ` [PATCH 3/9] perf session: export a few functions for event processing David Ahern
2013-08-12 10:19   ` [tip:perf/core] perf session: Export " tip-bot for David Ahern
2013-08-02 20:05 ` [PATCH 4/9] perf kvm: split out tracepoints from record args David Ahern
2013-08-05  5:09   ` Xiao Guangrong
2013-08-05 15:41     ` Arnaldo Carvalho de Melo
2013-08-12 10:19   ` [tip:perf/core] perf kvm: Split " tip-bot for David Ahern
2013-08-02 20:05 ` [PATCH 5/9] perf kvm: add live mode - v3 David Ahern
2013-08-05  5:53   ` Xiao Guangrong
2013-08-05 14:43     ` David Ahern [this message]
2013-08-02 20:05 ` [PATCH 6/9] perf kvm: add min and max stats to display David Ahern
2013-08-05  6:09   ` Xiao Guangrong
2013-08-05 14:44     ` David Ahern
2013-08-02 20:05 ` [PATCH 7/9] perf kvm: option to print events that exceed a threshold David Ahern
2013-08-05  6:39   ` Xiao Guangrong
2013-08-05 14:49     ` David Ahern
2013-08-02 20:05 ` [PATCH 8/9] perf kvm: debug for missing vmexit/vmentry event David Ahern
2013-08-05  6:53   ` Xiao Guangrong
2013-08-05 15:00     ` David Ahern
2013-08-02 20:05 ` [PATCH 9/9] perf kvm stat report: Add option to analyze specific VM David Ahern
2013-08-05  6:57   ` Xiao Guangrong
2013-08-05 14:57     ` David Ahern

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=51FFBA00.4070801@gmail.com \
    --to=dsahern@gmail.com \
    --cc=acme@ghostprotocols.net \
    --cc=fweisbec@gmail.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    --cc=runzhen@linux.vnet.ibm.com \
    --cc=xiaoguangrong@linux.vnet.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.