Messages in this thread | | | Subject | Re: [patch 0/4] Port KVM-trace to tracepoints | From | (Frank Ch. Eigler) | Date | Tue, 22 Jul 2008 15:16:12 -0400 |
| |
Avi Kivity <avi@qumranet.com> writes:
> [...] > kvm tracepoints are heavily tied into the implementation; and making > them harder to write means we will have less information. In fact, I > am contemplating moving in another direction (when looking at the > pgprintk()s scattered around arch/x86/kvm/mmu.c: > > kvm_trace("pfentry", "page_fault entry addr %lx error code %x\n", > cr2, error_code); > > Unlike printk()s, no actual formatting would occur during runtime.
Have you considered using trace_mark() directly - eliminating the KVM_TRACEN() middlemen?
> Instead, at initialization time all the strings would be parsed into > a data structure that describes the data types, and the runtime > would simply consult this structure and copy the arguments into > trace records. User space would also be able to pull this structure > and so recreate the formatted string.
If one really wanted to, one could build such a mechanism on top of marker-based callbacks.
> The advantages I see to this are: > > - easy to add traces; the most important advantage > - when the code changes, obsolete traces are completely removed > - good performance
Ditto.
> - no need to have a formats file in userspace (which is tied to the > kernel version)
OTOH, you'd have the kernel collecting compact binary records containing just the parameters, which are at least as tied to kernel version.
> - can also send printk()s along, for synchronization with other kvm > and kernel events
Ditto. It is elementary to attach a printk-generating marker callback.
- FChE
| |