simon
simon

Reputation: 5925

Monitoring pthread context switching

I would like to monitor the the context switching behavior in a multi-threaded pthread application.

In other RTOSes(Micro C OS) I have been able to register a context switch callback for each thread in the application, and then log (or toggle a gpio) and watch the thread context switching in real time. This was a valuable tool for debugging the real time behavior and interaction of the multiple threads.

My current environment is embedded linux utilizing the pthread api. Is there a way to monitor each of the context switches?

Upvotes: 4

Views: 3337

Answers (1)

Spudd86
Spudd86

Reputation: 3006

Not in the way you describe, however there are various profiling tools for Linux, like oprofile, SystemTap and perf events, I'm not sure how well they'd fit into embedded development though.

EDIT: perf is probably best (if you are running a recent enough kernel to use it) since it's in the mainline so you just have to turn it on, and it's really basic.

EDIT: if none of those work for you you can always modify the kernel context switch code...

EDIT: I missed one of the tracing frameworks, there is also LTTng

If you're using busybox and can compile your own kernel perf is probably the most minimal way to go, it's consists of turning on perf events in the kernel and compiling the perf tool that comes with the kernel source (it's in tools/perf)

Upvotes: 3

Related Questions