[ltt-dev] lost events due to non consumed full buffers

Akyurek, Ali (EXT) ali.akyurek.ext at siemens.com
Fri Jan 30 09:27:44 EST 2009


Hi all,

Below is a code snippet from ltt-relay.c of LTTng 0.9.10 running on the 2.6.22 kernel.
I got approx. 70000 lost events during tracing.
I've seen that the problem is non consumed full buffers, as i show with an arrow below.
This problem occurs when my user space application initializes itself.

What do you think about the problem of not consuming? What may cause this?

Thanks.

-----------------------------------------------------------------------
			reserve_commit_diff = SUBBUF_OFFSET(
				buf->chan->subbuf_size - local_read(
				&ltt_buf->commit_count[
						SUBBUF_INDEX(offset_begin,
						buf->chan)]), buf->chan);
			if (reserve_commit_diff == 0) {
				/* Next buffer not corrupted. */
				if (!ltt_channel->overwrite &&
					(SUBBUF_TRUNC(offset_begin, buf->chan)
					- SUBBUF_TRUNC(
					atomic_long_read(&ltt_buf->consumed),
					buf->chan))
					>= rchan->alloc_size) {
					/*
					 * We do not overwrite non consumed
					 * buffers and we are full : event
					 * is lost.
					 */
					/* printk("non_con_buf\n"); */
		==========>		local_inc(&ltt_buf->events_lost);
					return NULL;
				} else {
					/*
					 * next buffer not corrupted, we are
					 * either in overwrite mode or the
					 * buffer is not full. It's safe to
					 * write in this new subbuffer.
					 */
				}
			}
---------------------------------------------------------------------
 
Mit freundlichem Gruss / Best Regards
Ali Günhan Akyürek 
evosoft




More information about the lttng-dev mailing list