Re: [PATCH 1/2] sched: add trace events for task and rq usage tracking

From: Lei Wen
Date: Mon Jul 01 2013 - 08:19:07 EST


Hi Kamalesh,

On Mon, Jul 1, 2013 at 5:43 PM, Kamalesh Babulal
<kamalesh@xxxxxxxxxxxxxxxxxx> wrote:
> * Lei Wen <leiwen@xxxxxxxxxxx> [2013-07-01 15:10:32]:
>
>> Since we could track task in the entity level now, we may want to
>> investigate tasks' running status by recording the trace info, so that
>> could make some tuning if needed.
>>
>> Signed-off-by: Lei Wen <leiwen@xxxxxxxxxxx>
>> ---
>> include/trace/events/sched.h | 73 ++++++++++++++++++++++++++++++++++++++++++
>> kernel/sched/fair.c | 29 +++++++++++++++--
>> 2 files changed, 100 insertions(+), 2 deletions(-)
>
> [...]
>
>>
>> +TRACE_EVENT(sched_cfs_rq_runnable_load,
>> +
>> + TP_PROTO(int cpu, unsigned long load, unsigned long total),
>> +
>> + TP_ARGS(cpu, load, total),
>> +
>> + TP_STRUCT__entry(
>> + __field(int, cpu)
>> + __field(unsigned long, load)
>> + __field(unsigned long, total)
>> + ),
>> +
>> + TP_fast_assign(
>> + __entry->cpu = cpu;
>> + __entry->load = load;
>> + __entry->total = total;
>> + ),
>> +
>> + TP_printk("cpu=%d avg=%lu total=%lu",
>> + __entry->cpu,
>> + __entry->load,
>> + __entry->total)
>> +);
>> +
>> +TRACE_EVENT(sched_cfs_rq_blocked_load,
>> +
>> + TP_PROTO(int cpu, unsigned long load, unsigned long total),
>> +
>> + TP_ARGS(cpu, load, total),
>> +
>> + TP_STRUCT__entry(
>> + __field(int, cpu)
>> + __field(unsigned long, load)
>> + __field(unsigned long, total)
>> + ),
>> +
>> + TP_fast_assign(
>> + __entry->cpu = cpu;
>> + __entry->load = load;
>> + __entry->total = total;
>> + ),
>> +
>> + TP_printk("cpu=%d avg=%lu total=%lu",
>> + __entry->cpu,
>> + __entry->load,
>> + __entry->total)
>> +);
>> +
>> #endif /* _TRACE_SCHED_H */
>
> above trace points are same and be folded using EVENT_CLASS:

Nice abstract. I would merge your change for my V2 patch.

Thanks,
Lei

>
> +DECLARE_EVENT_CLASS(sched_cfs_rq_load_contri_template,
> +
> + TP_PROTO(int cpu, unsigned long load, unsigned long total),
> +
> + TP_ARGS(cpu, load, total),
> +
> + TP_STRUCT__entry(
> + __field(int, cpu)
> + __field(unsigned long, load)
> + __field(unsigned long, total)
> + ),
> +
> + TP_fast_assign(
> + __entry->cpu = cpu;
> + __entry->load = load;
> + __entry->total = total;
> + ),
> +
> + TP_printk("cpu=%d avg=%lu total=%lu",
> + __entry->cpu,
> + __entry->load,
> + __entry->total)
> +);
> +
> +DEFINE_EVENT(sched_cfs_rq_load_contri_template, sched_cfs_rq_runnable_load,
> + TP_PROTO(int cpu, unsigned long load, unsigned long total),
> + TP_ARGS(cpu, load, total));
> +
> +DEFINE_EVENT(sched_cfs_rq_load_contri_template, sched_cfs_rq_blocked_load,
> + TP_PROTO(int cpu, unsigned long load, unsigned long total),
> + TP_ARGS(cpu, load, total));
> +
>
> --
> 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/
--
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/