[RFC] tracing: a proc file to automatically release ring buffer memory

From: Vaibhav Nagarnaik
Date: Thu Mar 17 2011 - 17:29:41 EST


All

The current way to release memory from ftrace ring buffer is to:
echo 0 > /sys/kernel/debug/tracing/buffer_size_kb

Consider a scenario where ftrace is handled by a user space
process. Normally, this tracing is done as a low priority task on the
system. Under memory pressure for high priority tasks, tracing should
be turned off and the trace ring buffer memory released. The buffer
allocated is kernel memory and under OOM condition if the user space
process is oom-killed, there is no way to release the ring buffer
memory.

The proposal is to add a proc entry
/sys/kernel/debug/tracing/buffer_free. Its .release() fileops function
executes tracing_stop() and then resizes the global trace buffer to
minimum size (2*BUF_PAGE_SIZE). The user space process opens this file
and keeps it open. When the process gets killed, the fd gets closed
and .release() is called. This automatically stops the tracing and
frees up the ring buffer memory.

It is optional to use this functionality, since it won't affect
tracing for current programs. But it provides a way to automatically
free up memory, if needed. It can also be used on the command line to
stop tracing and free up memory as a single operation as:
echo > /sys/kernel/debug/tracing/buffer_free


Vaibhav Nagarnaik
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/