Message ID | 1408567997-21222-6-git-send-email-rkrcmar@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Il 20/08/2014 22:53, Radim Kr?má? ha scritto: > Tracepoint for dynamic PLE window, fired on every potential change. > > Signed-off-by: Radim Kr?má? <rkrcmar@redhat.com> > --- > arch/x86/kvm/trace.h | 25 +++++++++++++++++++++++++ > arch/x86/kvm/vmx.c | 8 +++++--- > arch/x86/kvm/x86.c | 1 + > 3 files changed, 31 insertions(+), 3 deletions(-) > > diff --git a/arch/x86/kvm/trace.h b/arch/x86/kvm/trace.h > index e850a7d..4b8e6cb 100644 > --- a/arch/x86/kvm/trace.h > +++ b/arch/x86/kvm/trace.h > @@ -848,6 +848,31 @@ TRACE_EVENT(kvm_track_tsc, > __print_symbolic(__entry->host_clock, host_clocks)) > ); > > +TRACE_EVENT(kvm_ple_window, > + TP_PROTO(int grow, unsigned int vcpu_id, int new, int old), s/int grow/bool grow/ (and similarly in TP_STRUCT__entry). > + TP_ARGS(grow, vcpu_id, new, old), > + > + TP_STRUCT__entry( > + __field( int, grow ) > + __field( unsigned int, vcpu_id ) > + __field( int, new ) > + __field( int, old ) > + ), > + > + TP_fast_assign( > + __entry->grow = grow; > + __entry->vcpu_id = vcpu_id; > + __entry->new = new; > + __entry->old = old; > + ), > + > + TP_printk("vcpu %u: ple_window %d %s %d", > + __entry->vcpu_id, > + __entry->new, > + __entry->grow ? "<+" : "<-", ? "grow" : "shrink" With these changes, Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Paolo > + __entry->old) > +); > + > #endif /* CONFIG_X86_64 */ > > #endif /* _TRACE_KVM_H */ > diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c > index e63d7ac..f63ac5d 100644 > --- a/arch/x86/kvm/vmx.c > +++ b/arch/x86/kvm/vmx.c > @@ -5728,15 +5728,17 @@ static int __shrink_ple_window(int val, int shrinker, int minimum) > static void modify_ple_window(struct kvm_vcpu *vcpu, int grow) > { > struct vcpu_vmx *vmx = to_vmx(vcpu); > + int old = vmx->ple_window; > int new; > > if (grow) > - new = __grow_ple_window(vmx->ple_window); > + new = __grow_ple_window(old) > else > - new = __shrink_ple_window(vmx->ple_window, ple_window_shrink, > - ple_window); > + new = __shrink_ple_window(old, ple_window_shrink, ple_window); > > vmx->ple_window = max(new, ple_window); > + > + trace_kvm_ple_window(grow, vcpu->vcpu_id, vmx->ple_window, old); > } > #define grow_ple_window(vcpu) modify_ple_window(vcpu, 1) > #define shrink_ple_window(vcpu) modify_ple_window(vcpu, 0) > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c > index 5696ee7..814b20c 100644 > --- a/arch/x86/kvm/x86.c > +++ b/arch/x86/kvm/x86.c > @@ -7648,3 +7648,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_invlpga); > EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_skinit); > EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_nested_intercepts); > EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_write_tsc_offset); > +EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_ple_window); > -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
2014-08-21 10:29+0200, Paolo Bonzini: > Il 20/08/2014 22:53, Radim Kr?má? ha scritto: > > Tracepoint for dynamic PLE window, fired on every potential change. > > > > Signed-off-by: Radim Kr?má? <rkrcmar@redhat.com> > > --- > > arch/x86/kvm/trace.h | 25 +++++++++++++++++++++++++ > > arch/x86/kvm/vmx.c | 8 +++++--- > > arch/x86/kvm/x86.c | 1 + > > 3 files changed, 31 insertions(+), 3 deletions(-) > > > > diff --git a/arch/x86/kvm/trace.h b/arch/x86/kvm/trace.h > > index e850a7d..4b8e6cb 100644 > > --- a/arch/x86/kvm/trace.h > > +++ b/arch/x86/kvm/trace.h > > @@ -848,6 +848,31 @@ TRACE_EVENT(kvm_track_tsc, > > __print_symbolic(__entry->host_clock, host_clocks)) > > ); > > > > +TRACE_EVENT(kvm_ple_window, > > + TP_PROTO(int grow, unsigned int vcpu_id, int new, int old), > > s/int grow/bool grow/ (and similarly in TP_STRUCT__entry). Ok. (We are using 'int' for this in other tracepoints, so I guessed there is some hate agains bool.) > > + TP_ARGS(grow, vcpu_id, new, old), > > + > > + TP_STRUCT__entry( > > + __field( int, grow ) > > + __field( unsigned int, vcpu_id ) > > + __field( int, new ) > > + __field( int, old ) > > + ), > > + > > + TP_fast_assign( > > + __entry->grow = grow; > > + __entry->vcpu_id = vcpu_id; > > + __entry->new = new; > > + __entry->old = old; > > + ), > > + > > + TP_printk("vcpu %u: ple_window %d %s %d", > > + __entry->vcpu_id, > > + __entry->new, > > + __entry->grow ? "<+" : "<-", > > ? "grow" : "shrink" Can't say I haven't expected comment about that :) -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Il 21/08/2014 13:56, Radim Kr?má? ha scritto: > 2014-08-21 10:29+0200, Paolo Bonzini: >> Il 20/08/2014 22:53, Radim Kr?má? ha scritto: >>> Tracepoint for dynamic PLE window, fired on every potential change. >>> >>> Signed-off-by: Radim Kr?má? <rkrcmar@redhat.com> >>> --- >>> arch/x86/kvm/trace.h | 25 +++++++++++++++++++++++++ >>> arch/x86/kvm/vmx.c | 8 +++++--- >>> arch/x86/kvm/x86.c | 1 + >>> 3 files changed, 31 insertions(+), 3 deletions(-) >>> >>> diff --git a/arch/x86/kvm/trace.h b/arch/x86/kvm/trace.h >>> index e850a7d..4b8e6cb 100644 >>> --- a/arch/x86/kvm/trace.h >>> +++ b/arch/x86/kvm/trace.h >>> @@ -848,6 +848,31 @@ TRACE_EVENT(kvm_track_tsc, >>> __print_symbolic(__entry->host_clock, host_clocks)) >>> ); >>> >>> +TRACE_EVENT(kvm_ple_window, >>> + TP_PROTO(int grow, unsigned int vcpu_id, int new, int old), >> >> s/int grow/bool grow/ (and similarly in TP_STRUCT__entry). > > Ok. > (We are using 'int' for this in other tracepoints, so I guessed there is > some hate agains bool.) Yeah, there are many ints, but there are also some bools. :) Of course "bool" is only a no-brainer if there is a clear direction to use (e.g. "bool has_error"), and indeed this case is less obvious. But there are some like this one (e.g. bool gpa_match). Keep the int if you prefer it that way. Paolo >>> + TP_ARGS(grow, vcpu_id, new, old), >>> + >>> + TP_STRUCT__entry( >>> + __field( int, grow ) >>> + __field( unsigned int, vcpu_id ) >>> + __field( int, new ) >>> + __field( int, old ) >>> + ), >>> + >>> + TP_fast_assign( >>> + __entry->grow = grow; >>> + __entry->vcpu_id = vcpu_id; >>> + __entry->new = new; >>> + __entry->old = old; >>> + ), >>> + >>> + TP_printk("vcpu %u: ple_window %d %s %d", >>> + __entry->vcpu_id, >>> + __entry->new, >>> + __entry->grow ? "<+" : "<-", >> >> ? "grow" : "shrink" > > Can't say I haven't expected comment about that :) > -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
2014-08-21 15:22+0200, Paolo Bonzini: > Il 21/08/2014 13:56, Radim Kr?má? ha scritto: > > 2014-08-21 10:29+0200, Paolo Bonzini: > >> Il 20/08/2014 22:53, Radim Kr?má? ha scritto: > >>> + TP_PROTO(int grow, unsigned int vcpu_id, int new, int old), > >> > >> s/int grow/bool grow/ (and similarly in TP_STRUCT__entry). > > > > Ok. > > (We are using 'int' for this in other tracepoints, so I guessed there is > > some hate agains bool.) > > Yeah, there are many ints, but there are also some bools. :) > > Of course "bool" is only a no-brainer if there is a clear direction to > use (e.g. "bool has_error"), and indeed this case is less obvious. But > there are some like this one (e.g. bool gpa_match). > > Keep the int if you prefer it that way. I actually like bool much better, but first few were only int and then I stopped looking ... -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/x86/kvm/trace.h b/arch/x86/kvm/trace.h index e850a7d..4b8e6cb 100644 --- a/arch/x86/kvm/trace.h +++ b/arch/x86/kvm/trace.h @@ -848,6 +848,31 @@ TRACE_EVENT(kvm_track_tsc, __print_symbolic(__entry->host_clock, host_clocks)) ); +TRACE_EVENT(kvm_ple_window, + TP_PROTO(int grow, unsigned int vcpu_id, int new, int old), + TP_ARGS(grow, vcpu_id, new, old), + + TP_STRUCT__entry( + __field( int, grow ) + __field( unsigned int, vcpu_id ) + __field( int, new ) + __field( int, old ) + ), + + TP_fast_assign( + __entry->grow = grow; + __entry->vcpu_id = vcpu_id; + __entry->new = new; + __entry->old = old; + ), + + TP_printk("vcpu %u: ple_window %d %s %d", + __entry->vcpu_id, + __entry->new, + __entry->grow ? "<+" : "<-", + __entry->old) +); + #endif /* CONFIG_X86_64 */ #endif /* _TRACE_KVM_H */ diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c index e63d7ac..f63ac5d 100644 --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c @@ -5728,15 +5728,17 @@ static int __shrink_ple_window(int val, int shrinker, int minimum) static void modify_ple_window(struct kvm_vcpu *vcpu, int grow) { struct vcpu_vmx *vmx = to_vmx(vcpu); + int old = vmx->ple_window; int new; if (grow) - new = __grow_ple_window(vmx->ple_window); + new = __grow_ple_window(old) else - new = __shrink_ple_window(vmx->ple_window, ple_window_shrink, - ple_window); + new = __shrink_ple_window(old, ple_window_shrink, ple_window); vmx->ple_window = max(new, ple_window); + + trace_kvm_ple_window(grow, vcpu->vcpu_id, vmx->ple_window, old); } #define grow_ple_window(vcpu) modify_ple_window(vcpu, 1) #define shrink_ple_window(vcpu) modify_ple_window(vcpu, 0) diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 5696ee7..814b20c 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -7648,3 +7648,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_invlpga); EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_skinit); EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_nested_intercepts); EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_write_tsc_offset); +EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_ple_window);
Tracepoint for dynamic PLE window, fired on every potential change. Signed-off-by: Radim Kr?má? <rkrcmar@redhat.com> --- arch/x86/kvm/trace.h | 25 +++++++++++++++++++++++++ arch/x86/kvm/vmx.c | 8 +++++--- arch/x86/kvm/x86.c | 1 + 3 files changed, 31 insertions(+), 3 deletions(-)