lkml.org 
[lkml]   [2009]   [Feb]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 1/2] tracing/core: make the per cpu trace files in per cpu directories
    Impact: scale per cpu tracing

    The per cpu trace files are all in a single directory: /debug/tracing/per_cpu.
    In case of a large number of cpu, the content of this directory becomes messy
    so we create now one directory per cpu inside /debug/tracing/per_cpu which contain
    each their own trace_pipe and trace files.

    Ie:

    nobody@nowhere:/debug/tracing$ ls -R per_cpu
    per_cpu:
    cpu0 cpu1

    per_cpu/cpu0:
    trace trace_pipe

    per_cpu/cpu1:
    trace trace_pipe

    Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
    ---
    kernel/trace/trace.c | 25 ++++++++++++++-----------
    1 files changed, 14 insertions(+), 11 deletions(-)

    diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
    index b7eeecc..b1f7105 100644
    --- a/kernel/trace/trace.c
    +++ b/kernel/trace/trace.c
    @@ -3061,28 +3061,31 @@ struct dentry *tracing_dentry_percpu(void)
    static void tracing_init_debugfs_percpu(long cpu)
    {
    struct dentry *d_percpu = tracing_dentry_percpu();
    - struct dentry *entry;
    - /* strlen(trace_pipe) + MAX(log10(cpu)) + '\0' */
    - char filename[17];
    + struct dentry *entry, *d_cpu;
    + /* strlen(cpu) + MAX(log10(cpu)) + '\0' */
    + char cpu_dir[7];

    if (cpu > 999 || cpu < 0)
    return;

    - /* per cpu trace_pipe */
    - sprintf(filename, "trace_pipe%ld", cpu);
    + sprintf(cpu_dir, "cpu%ld", cpu);
    + d_cpu = debugfs_create_dir(cpu_dir, d_percpu);
    + if (!d_cpu) {
    + pr_warning("Could not create debugfs '%s' entry\n", cpu_dir);
    + return;
    + }

    - entry = debugfs_create_file(filename, 0444, d_percpu,
    + /* per cpu trace_pipe */
    + entry = debugfs_create_file("trace_pipe", 0444, d_cpu,
    (void *) cpu, &tracing_pipe_fops);
    if (!entry)
    - pr_warning("Could not create debugfs '%s' entry\n", filename);
    + pr_warning("Could not create debugfs 'trace_pipe' entry\n");

    /* per cpu trace */
    - sprintf(filename, "trace%ld", cpu);
    -
    - entry = debugfs_create_file(filename, 0444, d_percpu,
    + entry = debugfs_create_file("trace", 0444, d_cpu,
    (void *) cpu, &tracing_fops);
    if (!entry)
    - pr_warning("Could not create debugfs '%s' entry\n", filename);
    + pr_warning("Could not create debugfs 'trace' entry\n");

    }

    --
    1.6.1



    \
     
     \ /
      Last update: 2009-02-26 07:15    [W:0.024 / U:91.896 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site