lkml.org 
[lkml]   [2009]   [May]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [tip:perfcounters/core] perf_counter: Optimize context switch between identical inherited contexts

    * tip-bot for Paul Mackerras <paulus@samba.org> wrote:

    > @@ -885,6 +934,16 @@ void perf_counter_task_sched_out(struct task_struct *task, int cpu)
    >
    > regs = task_pt_regs(task);
    > perf_swcounter_event(PERF_COUNT_CONTEXT_SWITCHES, 1, 1, regs, 0);
    > +
    > + next_ctx = next->perf_counter_ctxp;
    > + if (next_ctx && context_equiv(ctx, next_ctx)) {
    > + task->perf_counter_ctxp = next_ctx;
    > + next->perf_counter_ctxp = ctx;
    > + ctx->task = next;
    > + next_ctx->task = task;
    > + return;
    > + }

    there's one complication that this trick is causing - the migration
    counter relies on ctx->task to get per task migration stats:

    static inline u64 get_cpu_migrations(struct perf_counter *counter)
    {
    struct task_struct *curr = counter->ctx->task;

    if (curr)
    return curr->se.nr_migrations;
    return cpu_nr_migrations(smp_processor_id());
    }

    as ctx->task is now jumping (while we keep the context), the
    migration stats are out of whack.

    Ingo


    \
     
     \ /
      Last update: 2009-05-24 13:37    [W:0.023 / U:208.672 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site