Add dedicated trace events for benchmarking.
[barrelfish] / trace_definitions / trace_defs.pleco
1 /*
2  * Copyright (c) 2012-2013, ETH Zurich.
3  * All rights reserved.
4  *
5  * This file is distributed under the terms in the attached LICENSE file.
6  * If you do not find this file, copies can be found by writing to:
7  * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
8 */
9 /*
10  * \brief Subsystem and Event definitions of the tracing framework.
11  *
12  * Events do always belong to their subsystem. Make sure that you only
13  * call trace_event() with matching subsystems, in order to be able to
14  * make reasonable use of Aquarium 2.
15  *
16  * Note: If you don't specify a verbose description of the event, the
17  * description will default to the name of the event.
18  *
19  * Example:
20  *
21  * The subystem:
22  *
23  * subsystem mysubsystem {
24  *              event myevent "",
25  * }
26  *
27  * will be compiled into the following two C macros:
28  *
29  * #define TRACE_SUBSYSTEM_MYSUBSYSTEM 1
30  * #define TRACE_EVENT_MYSUBSYSTEM_MYEVENT 1
31  *
32  * The pattern is that every subsystem is mapped to the concatentation of
33  * TRACE_SUBSYSTEM_ and its name in uppercase, and each event is mapped to
34  * the concatenation of TRACE_EVENT_ and the subsystem name in upper case,
35  * followed by a _ and the name of the event.
36  *
37 */
38
39 subsystem kernel {
40
41     // Do not change CSWITCH name without changing Aquarium EventFactory.java!
42         event CSWITCH                           "Context Switch",
43         event BZERO                             "Buffer zeroing",
44         event TIMER                             "",
45         event TIMER_SYNC                        "",
46
47         event SCHED_MAKE_RUNNABLE       "",
48         event SCHED_REMOVE                      "",
49         event SCHED_YIELD                       "",
50         event SCHED_SCHEDULE            "",
51         event SCHED_CURRENT             "",
52
53     event CORE_START_REQUEST      "Requested start of a new core.",
54     event CORE_START_REQUEST_DONE "Request is sent, waiting for core to come up.",
55     event CORE_START_REQUEST_ACK  "Core is online.",
56
57     /* Syscalls */
58     event SC_PRINT            "Syscall PRINT",
59     event SC_DISP_SETUP       "Syscall DISPATCHER ",
60     event SC_DISP_PROPS       "Syscall DISPATCHER_PROPS",
61     event SC_RETYPE           "Syscall RETYPE",
62     event SC_CREATE           "Syscall CREATE",
63     event SC_COPY_OR_MINT     "Syscall COPY_OR_MINT",
64     event SC_CTE_FOR_CAP      "Syscall CTE_FOR_CAP",
65     event SC_MAP              "Syscall MAP",
66     event SC_DELETE           "Syscall DELETE",
67     event SC_REVOKE           "Syscall REVOKE",
68     event SC_MONITOR_REGISTER "Syscall MONITOR_REGISTER",
69     event SC_IDENTIFY_CAP     "Syscall IDENTIFY_CAP",
70     event SC_NULLIFY_CAP      "Syscall NULLIFY_CAP",
71     event SC_DOMAIN_ID        "Syscall DOMAIN_ID",
72     event SC_YIELD            "Syscall YIELD",
73     event SC_SUSPEND          "Syscall SUSPEND",
74     event SC_IDCAP_IDENTIFY   "Syscall IDCAP_IDENTIFY",
75     event SC_SPAWN_CORE       "Syscall SPAWN_CORE",
76
77     event CAP_LOOKUP_SLOT          "Cap Slot lookup",
78     event CAP_LOOKUP_CAP           "Cap Lookup",
79     event CAP_CREATE_FROM_EXISTING "Cap Create from existing",
80     event CAP_CREATE_NEW           "Cap Create new",
81     event CAP_RETYPE               "Cap Retype",
82 };
83
84 subsystem threads {
85
86     event BARRIER_ENTER                         "",
87     event BARRIER_LEAVE                         "",
88
89     event MUTEX_LOCK_ENTER                      "",
90     event MUTEX_LOCK_LEAVE                      "",
91     event MUTEX_LOCK_NESTED_ENTER       "",
92     event MUTEX_LOCK_NESTED_LEAVE       "",
93     event MUTEX_TRYLOCK                         "",
94     event MUTEX_UNLOCK                          "",
95
96     event COND_WAIT_ENTER                       "",
97     event COND_WAIT_LEAVE                       "",
98     event COND_SIGNAL                           "",
99     event COND_BROADCAST                        "",
100
101     event SEM_WAIT_ENTER                        "",
102     event SEM_WAIT_LEAVE                        "",
103     event SEM_TRYWAIT                           "",
104     event SEM_POST                                      "",
105 };
106
107 subsystem memserv {
108
109     event ALLOC "",
110
111         event PERCORE_INIT                              "",
112         event PERCORE_ALLOC                     "",
113         event PERCORE_ALLOC_COMPLETE    "",
114 };
115
116 subsystem memtest {
117
118         event START                                     "",
119         event STOP                                      "",
120         event STARTED                           "",
121         event WAIT                                      "",
122         event RUN                                       "",
123         event DONE                                      "",
124         event ALLOC                             "",
125         event MASTER                            "",
126         event WORKER                            "",
127
128 };
129
130
131 subsystem monitor {
132     event SPAN0                                 "",
133     event SPAN1                                 "",
134     event SPAN                                          "",
135     event PCREQ                                 "",
136     event PCREP                                 "",
137     event PCREQ_INTER                           "",
138     event PCREPLY_INTER                 "",
139     event URPC_BLOCK                            "",
140     event URPC_UNBLOCK                          "",
141     event REMOTE_CAP_RETYPE             "",
142     event REMOTE_CAP_RETYPE_RETRY       "",
143     event REMOTE_CAP_RETYPE_MSG "",
144     event REMOTE_CAP_RETYPE_END "",
145     event POLLING                                       "",
146     event BIND_MONITOR_REPLY "Bind monitor reply",
147     event BIND_MONITOR_REQUEST "Request to setup connection with new monitor",
148     event BOOT_CORE_REQUEST "Received request from (user -> monitor) [in monitor].",
149     event BOOT_INITIALIZE_REQUEST "Monitor got boot initialize request",
150     event INVOKE_SPAWN "Monitor requests boot-up from kernel (monitor -> kernel).",
151 };
152
153 subsystem chips {
154
155  event LISTENCB                                 "",
156
157 };
158
159 subsystem bflib {
160
161         // XXX: Empty subsystems are not allowed
162         event dummy                             "",
163
164 };
165
166
167 subsystem tweed {
168
169  event START                            "",
170  event END                                      "",
171  event STEAL                            "",
172  event STEAL_END                        "",
173  event WAIT                                     "",
174  event WAIT_END                         "",
175  event LOCKING                          "",
176  event LOCKING_END                      "",
177
178 };
179
180 subsystem route {
181
182  event BCAST_WITH_CCAST_SEND            "",
183  event BCAST_WITH_CCAST                         "",
184  event RECV_BCAST_WITH_CCAST            "",
185  event RECV_CCAST                                       "",
186  event BENCH_START                                      "",
187  event BENCH_STOP                                       "",
188  event SEND_PING                                        "",
189  event SEND_PONG                                        "",
190  event RECV_PING                                        "",
191  event RECV_PONG                                        "",
192  event POLL                                                     "",
193
194 };
195
196 // Generic Benchmarking events
197 subsystem bench {
198
199  event START                "Start the benchmark/tracing",
200  event STOP                 "End of the benchmark/tracing",
201
202  event ROUND_START          "",
203  event ROUND_END            "",
204
205  event PCBENCH                          "",
206  event RXPING                           "",
207  event RXPONG                           "",
208
209
210 };
211
212 subsystem bomp {
213
214  event START                            "",
215  event STOP                                     "",
216  event ITER                                     "",
217
218 };
219
220 subsystem barriers {
221
222  event START                            "",
223  event STOP                                     "",
224  event BARRIER_WAIT                     "",
225  event CENTRAL_REQ                      "",
226  event CENTRAL_REP                      "",
227  event TREE_REQ                         "",
228  event TREE_REP                         "",
229  event DIST                                     "",
230  event SEND                                     "",
231  event POLL1                            "",
232  event POLL2                            "",
233  event HEAP_REQ                         "",
234  event HEAP_REP                         "",
235  event SEQ_BCAST_REQ            "",
236  event SEQ_BCAST_RECV           "",
237  event TREE_BCAST_REQ           "",
238  event TREE_BCAST_RECV          "",
239
240 };
241
242 /* Following constants are used in network subsystem. */
243 subsystem net {
244
245  event START               "",
246  event STOP                "",
247  event NI_AI               "added, 0",
248  event NI_I                "added, 0",
249  event NI_A                "added, pkt data location",
250  event NI_FILTER_FRAG      "added, pkt data location",
251  event NI_FILTER_EX_1      "added, pkt data location",
252  event NI_ARP              "added, pkt data location",
253  event NI_FILTER_EX_2      "added, pkt data location",
254  event NI_PKT_CPY_1        "added, pkt data location",
255  event NI_PKT_CPY_2        "added, pkt data location",
256  event NI_PKT_CPY_3        "added, pkt data location",
257  event NI_PKT_CPY_4        "added, pkt data location",
258
259  event NI_PKT_CPY          "added, pkt data location",
260  event NI_P                "added, pbuf_id",
261  event NI_S                "added, pbuf_id",
262  event AI_A                "added, pbuf_id",
263  event AI_P                "added, pbuf_addr",
264  event AO_C                "added, pbuf_addr",
265  event AO_Q                "added, pbuf_addr",
266  event AO_S                "added, pbuf_addr (as client_data )",
267  event NO_A                "added, client_data (pbuf_address in lwip)",
268  event NO_S                "added, e1000n.c client_data (pbuf_address in lwip)",
269
270 /* FIXME: Add the timings of when does NIC gets TX_done */
271  event NO_TXD              "yet to add",
272  event AIR_R               "added, pbuf_addr (TX DONE in app)",
273
274 /* Response flow */
275  event AOR_S               "added, pbuf_id ( register_pbuf from APP)",
276  event NIR_REG_PBUF        "commented pbuf_id ( register_pbuf in NIC)",
277 };
278
279 subsystem multihop {
280
281  event BENCH_START               "",
282  event BENCH_STOP                "",
283  event MESSAGE_SEND              "",
284  event MESSAGE_RECEIVE           "",
285
286 };
287
288 /* Following constants are used in network benchmark. */
289 subsystem bnet {
290
291  event START               "",
292  event STOP                "",
293  event DRV_SEE             "",
294  event APP_SEE             "",
295  event DRV_INT             "",
296  event DRV_POLL            "",
297  event YIELD               "",
298  event I                   "",
299
300 };
301
302 /* Following constans are used for profiling modified stack */
303 subsystem nnet {
304
305  event START               "",
306  event STOP                "",
307  event RXDRVSEE            "Driver saw pkg (RX)",
308  event RXESVSEE            "Ethersrv saw pkg",
309  event RXESVFRGDONE        "Ethersrv checked frag",
310  event RXESVAPPFDONE       "Ethersrv app filtered",
311  event RXESVAPPCSTART      "Ethersrv app c2u started",
312  event RXESVCOPIED         "Ethersrv copied pkg",
313  event RXESVSPPDONE        "Ethersrv spp produce done",
314  event RXESVAPPNOTIF       "Ethersrv app notify",
315  event RXLWIINCOM          "LWIP handle_incoming_",
316  event RXLWIRECH           "LWIP call rec_handler",
317  event RXAPPRCV            "APP received",
318
319  event TXAPPSNT            "APP sent",
320  event TXLWISEE            "LWIP idc_send_packet",
321  event TXLWIBFFENCE        "LWIP before mfence",
322  event TXLWIAFFENCE        "LWIP after mfence",
323  event TXLWIFLUSHED        "LWIP payload flushed",
324  event TXLWIBDESC          "LWIP bufferdesc fetched",
325  event TXLWISPPSND         "LWIP spp produced",
326  event TXLWISPPIDX         "LWIP update spp index",
327  event TXLWITXWORK         "LWIP pending TX work",
328  event TXLWINOTIF          "LWIP notify driver",
329  event TXESVNOTIF          "Ethersrv notify recieved",
330  event TXESVSPOW           "Ethersrv send_pkt_on_w..",
331  event TXESVSSPOW          "Ethersrv send_sng_pkt..",
332  event TXDRVADD            "Driver add pkg (TX)",
333  event TXDRVSEE            "Driver saw pkg done (TX)",
334  event TX_TCP_WRITE        "tcp_write done",
335  event TX_TCP_OUTPUT       "tcp_output done",
336  event TX_TCP_RECV         "tcp_recved done",
337  event TX_TCP_FREE         "tx pbuf freed",
338  event TX_MEMP             "tx pbuf memp start",
339  event TX_MEMP_D           "tx pbuf memp done",
340
341 };
342
343 /* The example subsystem is used to demonstrate how the tracing framework
344  * works. It is used by the program in "examples/xmpl-trace". */
345 subsystem xmpl {
346
347         event START                             "",
348         event STOP                              "",
349         event EV1                               "",
350         event EV2                               "",
351
352 };
353
354 subsystem acpi {
355     event APIC_ADDED     "ACPI added fact about new core to SKB",
356 };
357
358 // Use to trace the core booting system
359 subsystem cores {
360     event USER_REQUEST     "Kaluga requests boot-up of new CPU user -> monitor.",
361     event ALL_UP           "Everything has booted",
362     event BOOT_INITIALIZE_USER "User sends boot initialize to monitor",
363 };