[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC][PATCH] 1/3] [XEN] Use explicit bit sized fields for exported xentrace data.
Hmm... this has the unfortunate side-effect of doubling the size of the trace, and effectively halving the effectiveness of the trace buffer in avoiding drops. My moderate-length traces are already in the gigabyte range, and I occasionally lose trace records even with a buffer size of 256. It would be really nice if we could avoid that. I happen to be using the VMENTER/VMEXIT tracing, which could be consolidated into one record if we went to a 64-bit trace. Is anyone else doing high-bandwidth tracing that this would affect in a significantly negative way? -George On 11/30/06, Tony Breeds <tony@xxxxxxxxxxxxxxxxxx> wrote: Signed-off-by: Tony Breeds <tony@xxxxxxxxxxxxxxxxxx> --- xen/common/trace.c | 6 +++--- xen/include/public/trace.h | 2 +- xen/include/xen/trace.h | 14 +++++++------- 3 files changed, 11 insertions(+), 11 deletions(-) Index: xen-unstable.hg-mainline.xentrace/xen/common/trace.c =================================================================== --- xen-unstable.hg-mainline.xentrace.orig/xen/common/trace.c +++ xen-unstable.hg-mainline.xentrace/xen/common/trace.c @@ -46,7 +46,7 @@ static int nr_recs; static int t_buf_highwater; /* Number of records lost due to per-CPU trace buffer being full. */ -static DEFINE_PER_CPU(unsigned long, lost_records); +static DEFINE_PER_CPU(uint64_t, lost_records); /* a flag recording whether initialization has been done */ /* or more properly, if the tbuf subsystem is enabled right now */ @@ -228,8 +228,8 @@ int tb_control(xen_sysctl_tbuf_op_t *tbc * failure, otherwise 0. Failure occurs only if the trace buffers are not yet * initialised. */ -void trace(u32 event, unsigned long d1, unsigned long d2, - unsigned long d3, unsigned long d4, unsigned long d5) +void trace(uint32_t event, uint64_t d1, uint64_t d2, uint64_t d3, uint64_t d4, + uint64_t d5) { struct t_buf *buf; struct t_rec *rec; Index: xen-unstable.hg-mainline.xentrace/xen/include/public/trace.h =================================================================== --- xen-unstable.hg-mainline.xentrace.orig/xen/include/public/trace.h +++ xen-unstable.hg-mainline.xentrace/xen/include/public/trace.h @@ -76,7 +76,7 @@ struct t_rec { uint64_t cycles; /* cycle counter timestamp */ uint32_t event; /* event ID */ - unsigned long data[5]; /* event data items */ + uint64_t data[5]; /* event data items */ }; /* Index: xen-unstable.hg-mainline.xentrace/xen/include/xen/trace.h =================================================================== --- xen-unstable.hg-mainline.xentrace.orig/xen/include/xen/trace.h +++ xen-unstable.hg-mainline.xentrace/xen/include/xen/trace.h @@ -33,19 +33,19 @@ void init_trace_bufs(void); /* used to retrieve the physical address of the trace buffers */ int tb_control(struct xen_sysctl_tbuf_op *tbc); -void trace(u32 event, unsigned long d1, unsigned long d2, - unsigned long d3, unsigned long d4, unsigned long d5); +void trace(uint32_t event, uint64_t d1, uint64_t d2, uint64_t d3, uint64_t d4, + uint64_t d5); /* Avoids troubling the caller with casting their arguments to a trace macro */ #define trace_do_casts(e,d1,d2,d3,d4,d5) \ do { \ if ( unlikely(tb_init_done) ) \ trace(e, \ - (unsigned long)d1, \ - (unsigned long)d2, \ - (unsigned long)d3, \ - (unsigned long)d4, \ - (unsigned long)d5); \ + (uint64_t)d1, \ + (uint64_t)d2, \ + (uint64_t)d3, \ + (uint64_t)d4, \ + (uint64_t)d5); \ } while ( 0 ) /* Convenience macros for calling the trace function. */ _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |