aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/trace/trace.c
diff options
context:
space:
mode:
authorSteven Rostedt <srostedt@redhat.com>2009-03-11 22:00:13 -0400
committerSteven Rostedt <srostedt@redhat.com>2009-03-11 22:15:27 -0400
commit554f786e284a6ce859d51f62240d615603944c8e (patch)
treed3710f97dac93861b3ff1f389276e643798f9b2e /kernel/trace/trace.c
parent9aba60fe6eb20453de53a572143bef22fa929fba (diff)
ring-buffer: only allocate buffers for online cpus
Impact: save on memory Currently, a ring buffer was allocated for each "possible_cpus". On some systems, this is the same as NR_CPUS. Thus, if a system defined NR_CPUS = 64 but it only had 1 CPU, we could have possibly 63 useless ring buffers taking up space. With a default buffer of 3 megs, this could be quite drastic. This patch changes the ring buffer code to only allocate ring buffers for online CPUs. If a CPU goes off line, we do not free the buffer. This is because the user may still have trace data in that buffer that they would like to look at. Perhaps in the future we could add code to delete a ring buffer if the CPU is offline and the ring buffer becomes empty. Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Diffstat (limited to 'kernel/trace/trace.c')
-rw-r--r--kernel/trace/trace.c6
1 files changed, 0 insertions, 6 deletions
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index e60f4be10d64..14c98f6a47bc 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -1805,17 +1805,11 @@ __tracing_open(struct inode *inode, struct file *file)
1805 1805
1806 iter->buffer_iter[cpu] = 1806 iter->buffer_iter[cpu] =
1807 ring_buffer_read_start(iter->tr->buffer, cpu); 1807 ring_buffer_read_start(iter->tr->buffer, cpu);
1808
1809 if (!iter->buffer_iter[cpu])
1810 goto fail_buffer;
1811 } 1808 }
1812 } else { 1809 } else {
1813 cpu = iter->cpu_file; 1810 cpu = iter->cpu_file;
1814 iter->buffer_iter[cpu] = 1811 iter->buffer_iter[cpu] =
1815 ring_buffer_read_start(iter->tr->buffer, cpu); 1812 ring_buffer_read_start(iter->tr->buffer, cpu);
1816
1817 if (!iter->buffer_iter[cpu])
1818 goto fail;
1819 } 1813 }
1820 1814
1821 /* TODO stop tracer */ 1815 /* TODO stop tracer */