Tracing thread name (was: ltt comm tracking)

From: Mathieu Desnoyers
Date: Mon Aug 03 2009 - 09:48:57 EST


* Matthieu CASTET (matthieu.castet@xxxxxxxxxx) wrote:
> Hi,
>
> I use ltt on a 2.6.27 on an arm architecture.
> It works quite well, but I have a minor problem :
>
> my application sets thread name with prctl PR_SET_NAME. But ltt viewer
> doesn't seem to saw it.
>

Hrm, I guess we might want to instrument set_task_comm as you propose to
get the correct process name, but if this gets us the thread name, I
think it's only an implementation side-effect:

If I look at the man page:

PRCTL(2)

PR_SET_NAME (since Linux 2.6.9)
Set the process name for the calling process, using the value in
the location pointed to by (char *) arg2. The name can be up to
16 bytes long, and should be null terminated if it contains
fewer bytes.

It seems to officially set the process name, not thread name.

The way LTTng handles thread names is by adding a userspace "thread
branding" event. It should be executed at thread startup. The downside
of the current LTTng approach is that we cannot know the name of threads
already executing before we started tracing.

Ideally, having something like prctl PR_SET/GET_THREAD_NAME would
probably make sense.

Mathieu

> I don't know how/where ltt extracts the comm name, but may be a
> tracepoint should be added in set_task_comm ?
>
> Any idea how to make ltt use name set with prctl ?
> This will make more easier to read trace for application with lot's of
> threads.
>
>
> Thanks
>
> Matthieu CASTET
>
> _______________________________________________
> ltt-dev mailing list
> ltt-dev@xxxxxxxxxxxxxxxxxxxxx
> http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
>

--
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
--
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/