[lkml]   [2010]   [Dec]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Subject[Patch 00/15] Reduce tracing payload size.
This is a series of patches for tracing aiming to reduce the size of events in
the trace buffer. For some tracing tasks, the machine is so heavily loaded such
that events are produced much faster than they can be written to disk or
network. In this situation, the sizes of the trace events and the ring buffer
are the primary factors limiting the length of time that can be traced. Even
with ktrace (which has significantly smaller event sizes), a fairly minimal set
of enabled events, and a 16MB buffer per cpu, we are finding we can only get
about 20 seconds of tracing. This is not enough when the problem being
diagnosed only occurs at greater timescales and cannot be easily detected at

These patches are just a start to shrinking the size of trace events. I am
planning to also make small versions of trace events that are used when
CONFIG_SMALL_TRACES is enabled. I'm also open to discussion of other ways to
shrink event sizes.

The patches can be divided into three major groups.

The first group is self explanitory patches, not actually related to shrinking

tracing: Add a 'buffer_overwrite' debugfs file
ring_buffer.c: Remove unused #include <linux/trace_irq.h>
ring_buffer: Align buffer_page struct allocations only to fit the flags.

The second group is patches to adjust packing and alignment of tracing event

ftrace: pack event structures.
ftrace: fix event alignment: ftrace:context_switch and ftrace:wakeup
ftrace: fix event alignment: module:module_request
ftrace: fix event alignment: kvm:kvm_hv_hypercall
ftrace: fix event alignment: mce:mce_record
ftrace: fix event alignment: skb:kfree_skb
ftrace: fix event alignment: jbd2:*
ftrace: fix event alignment: ext4:*

The third group are patches to remove 8 bytes from struct trace_entry:

trace_output.c: adjust conditional expression formatting.
small_traces: Add config option to shrink trace events.
small_traces: Remove trace output of large fields.
small_traces: Remove 8 bytes from trace_entry.


 \ /
  Last update: 2010-12-04 01:15    [W:0.242 / U:1.736 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site