All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Ahern <dsahern@gmail.com>
To: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
	Gleb Natapov <gleb@redhat.com>, Ingo Molnar <mingo@kernel.org>,
	LKML <linux-kernel@vger.kernel.org>, KVM <kvm@vger.kernel.org>,
	yoshihiro.yunomae.ez@hitachi.com,
	"yrl.pp-manager.tt@hitachi.com" <yrl.pp-manager.tt@hitachi.com>
Subject: Re: RFC: paravirtualizing perf_clock
Date: Wed, 30 Oct 2013 08:03:41 -0600	[thread overview]
Message-ID: <527111BD.9010803@gmail.com> (raw)
In-Reply-To: <5270A03F.8020301@hitachi.com>

On 10/29/13 11:59 PM, Masami Hiramatsu wrote:
> (2013/10/29 11:58), David Ahern wrote:
>> To back out a bit, my end goal is to be able to create and merge
>> perf-events from any context on a KVM-based host -- guest userspace,
>> guest kernel space, host userspace and host kernel space (userspace
>> events with a perf-clock timestamp is another topic ;-)).
>
> That is almost same as what we(Yoshihiro and I) are trying on integrated
> tracing, we are doing it on ftrace and trace-cmd (but perhaps, it eventually
> works on perf-ftrace).

I thought at this point (well, once perf-ftrace gets committed) that you 
can do everything with perf. What feature is missing in perf that you 
get with trace-cmd or using debugfs directly?


>> And then for the cherry on top a design that works across architectures
>> (e.g., x86 now, but arm later).
>
> I think your proposal is good for the default implementation, it doesn't
> depends on the arch specific feature. However, since physical timer(clock)
> interfaces and virtualization interfaces strongly depends on the arch,
> I guess the optimized implementations will become different on each arch.
> For example, maybe we can export tsc-offset to the guest to adjust clock
> on x86, but not on ARM, or other devices. In that case, until implementing
> optimized one, we can use paravirt perf_clock.

So this MSR read takes about 1.6usecs (from 'perf stat kvm live') and 
that is total time between VMEXIT and VMENTRY. The time it takes to run 
perf_clock in the host should be a very small part of that 1.6 usec. 
I'll take a look at the TSC path to see how it is optimized (suggestions 
appreciated).

Another thought is to make the use of pv_perf_clock an option -- user 
can knowingly decide the additional latency/overhead is worth the feature.

David

  reply	other threads:[~2013-10-30 14:03 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-28  1:27 RFC: paravirtualizing perf_clock David Ahern
2013-10-28 13:00 ` Gleb Natapov
2013-10-28 13:15 ` Peter Zijlstra
2013-10-29  2:58   ` David Ahern
2013-10-29 13:23     ` Peter Zijlstra
2013-10-30  5:59     ` Masami Hiramatsu
2013-10-30 14:03       ` David Ahern [this message]
2013-10-31  8:09         ` Masami Hiramatsu
2013-10-31 16:45           ` David Ahern
2013-10-30 14:20     ` Gleb Natapov
2013-10-30 14:31       ` 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=527111BD.9010803@gmail.com \
    --to=dsahern@gmail.com \
    --cc=gleb@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=masami.hiramatsu.pt@hitachi.com \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=yoshihiro.yunomae.ez@hitachi.com \
    --cc=yrl.pp-manager.tt@hitachi.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.