Skip to content

Commit f81ab07

Browse files
vnagarnaikrostedt
authored andcommitted
trace: Add a new readonly entry to report total buffer size
The current file "buffer_size_kb" reports the size of per-cpu buffer and not the overall memory allocated which could be misleading. A new file "buffer_total_size_kb" adds up all the enabled CPU buffer sizes and reports it. This is only a readonly entry. Signed-off-by: Vaibhav Nagarnaik <[email protected]> Cc: Michael Rubin <[email protected]> Cc: David Sharp <[email protected]> Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: Steven Rostedt <[email protected]>
1 parent 86b6ef2 commit f81ab07

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

kernel/trace/trace.c

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3568,6 +3568,30 @@ tracing_entries_write(struct file *filp, const char __user *ubuf,
35683568
return cnt;
35693569
}
35703570

3571+
static ssize_t
3572+
tracing_total_entries_read(struct file *filp, char __user *ubuf,
3573+
size_t cnt, loff_t *ppos)
3574+
{
3575+
struct trace_array *tr = filp->private_data;
3576+
char buf[64];
3577+
int r, cpu;
3578+
unsigned long size = 0, expanded_size = 0;
3579+
3580+
mutex_lock(&trace_types_lock);
3581+
for_each_tracing_cpu(cpu) {
3582+
size += tr->entries >> 10;
3583+
if (!ring_buffer_expanded)
3584+
expanded_size += trace_buf_size >> 10;
3585+
}
3586+
if (ring_buffer_expanded)
3587+
r = sprintf(buf, "%lu\n", size);
3588+
else
3589+
r = sprintf(buf, "%lu (expanded: %lu)\n", size, expanded_size);
3590+
mutex_unlock(&trace_types_lock);
3591+
3592+
return simple_read_from_buffer(ubuf, cnt, ppos, buf, r);
3593+
}
3594+
35713595
static ssize_t
35723596
tracing_free_buffer_write(struct file *filp, const char __user *ubuf,
35733597
size_t cnt, loff_t *ppos)
@@ -3739,6 +3763,12 @@ static const struct file_operations tracing_entries_fops = {
37393763
.llseek = generic_file_llseek,
37403764
};
37413765

3766+
static const struct file_operations tracing_total_entries_fops = {
3767+
.open = tracing_open_generic,
3768+
.read = tracing_total_entries_read,
3769+
.llseek = generic_file_llseek,
3770+
};
3771+
37423772
static const struct file_operations tracing_free_buffer_fops = {
37433773
.write = tracing_free_buffer_write,
37443774
.release = tracing_free_buffer_release,
@@ -4450,6 +4480,9 @@ static __init int tracer_init_debugfs(void)
44504480
trace_create_file("buffer_size_kb", 0644, d_tracer,
44514481
&global_trace, &tracing_entries_fops);
44524482

4483+
trace_create_file("buffer_total_size_kb", 0444, d_tracer,
4484+
&global_trace, &tracing_total_entries_fops);
4485+
44534486
trace_create_file("free_buffer", 0644, d_tracer,
44544487
&global_trace, &tracing_free_buffer_fops);
44554488

0 commit comments

Comments
 (0)