Modification nécessaire pour faire des custom probes avec trace_mark_tp.
Sous la recommandation de Michel et Mathieu, il était mieux d'utiliser
cela pour les tests de profilage que des trace_mark ou des tracepoints.
Ceci étant dit, les résultats avec un test de profilage que j'ai monté,
contenant 3 tracepoints, le average perevent était de ~65ns.
Maintenant, résultats préliminaires avec les custom probes sur le même
test suite que les trace_mark et tracepoints :
Average time per event : 0.
0000000159 (sec), 0.00002
(msec), 0.01587 (usec), 15.86718 (nsec)
Best time [RUN 5] : 0.
0000000154 (sec), 0.00002
(msec), 0.01536 (usec), 15.35519 (nsec)
Worst time [RUN 6] : 0.
0000000166 (sec), 0.00002
(msec), 0.01659 (usec), 16.59236 (nsec)
Standard Deviation : 0.
0000000004 (sec), 0.00000
(msec), 0.00038 (usec), 0.38116 (nsec)
Quand même! ;)
Bref, je continue mais si tu veux commenter ou proposer des tests, fait
moi signe.
A plus
David
From
e1fc903e0cedfc21895b2ad952bb6127d0b3b853 Mon Sep 17 00:00:00 2001
From: David Goulet <david.goulet@polymtl.ca>
Date: Wed, 23 Jun 2010 17:04:45 -0400
Subject: [PATCH] Fixed __trace_mark_tp_counter with the usage of
DEFINE_MARKER_TP macro. Down to 5 arguments instead of 7
and added registers struct missing. Now, custom probes
can be used within UST with trace_mark_tp function
#define __trace_mark_tp_counter(channel, name, unique, call_private, tp_name, tp_cb, format, args...) \
do { \
- struct marker m; \
+ struct registers regs; \
void __check_tp_type(void) \
{ \
register_trace_##tp_name(tp_cb); \
} \
- DEFINE_MARKER_TP(channel, name, tp_name, tp_cb, format, unique, m);\
+ DEFINE_MARKER_TP(channel, name, tp_name, tp_cb, format);\
__mark_check_format(format, ## args); \
(*__mark_##channel##_##name.call)(&__mark_##channel##_##name, \
call_private, ®s, ## args); \