Re: [PATCH 1/2] tracing/mm: don't trace kfree on offline CPUs

From: Steven Rostedt
Date: Sun Feb 14 2016 - 11:45:45 EST


On Sat, 13 Feb 2016 21:22:52 +0300
Denis Kirjanov <kda@xxxxxxxxxxxxxxxxx> wrote:

> -DEFINE_EVENT(kmem_free, kfree,
> +DEFINE_EVENT_CONDITION(kmem_free, kfree,
>
> TP_PROTO(unsigned long call_site, const void *ptr),
>
> - TP_ARGS(call_site, ptr)
> + TP_ARGS(call_site, ptr),
> +
> + /*
> + * This trace can be potentially called from an offlined cpu.
> + * Since trace points use RCU and RCU should not be used from
> + * offline cpus, filter such calls out.
> + * While this trace can be called from a preemptable section,
> + * it has no impact on the condition since tasks can migrate
> + * only from online cpus to other online cpus. Thus its safe
> + * to use raw_smp_processor_id.
> + */
> + TP_CONDITION(cpu_online(raw_smp_processor_id()))

This is starting to become a common occurrence. Perhaps it is best to
just hardcode this into the tracepoint code itself?

-- Steve

> );
>
> DEFINE_EVENT_CONDITION(kmem_free, kmem_cache_free,