fallbackdir: Update list generated on August 30, 2023
[tor.git] / src / core / or / lttng_cc.inc
blobd315be91f70115bb082defc1baeb6c28d57824b4
1 /* Copyright (c) 2021, The Tor Project, Inc. */
2 /* See LICENSE for licensing information */
4 /**
5  * \file lttng_cc.inc
6  * \brief LTTng tracing probe declaration for the congestion control subsystem.
7  *        It is in this .inc file due to the non C standard syntax and the way
8  *        we guard the header with the LTTng specific
9  *        TRACEPOINT_HEADER_MULTI_READ.
10  **/
12 #include "orconfig.h"
14 /* We only build the following if LTTng instrumentation has been enabled. */
15 #ifdef USE_TRACING_INSTRUMENTATION_LTTNG
17 /* The following defines are LTTng-UST specific. */
18 #undef TRACEPOINT_PROVIDER
19 #define TRACEPOINT_PROVIDER tor_cc
21 #undef TRACEPOINT_INCLUDE
22 #define TRACEPOINT_INCLUDE "./src/core/or/lttng_cc.inc"
24 #if !defined(LTTNG_CC_INC) || defined(TRACEPOINT_HEADER_MULTI_READ)
25 #define LTTNG_CC_INC
27 #include <lttng/tracepoint.h>
30  * Flow Control
31  */
33 /* Emitted every time the flow_control_decide_xon() function is called. */
34 TRACEPOINT_EVENT(tor_cc, flow_decide_xon,
35   TP_ARGS(const edge_connection_t *, stream, size_t, n_written),
36   TP_FIELDS(
37     ctf_integer(uint64_t, stream_id, TO_CONN(stream)->global_identifier)
38     ctf_integer(size_t, written_bytes, n_written)
39     ctf_integer(uint32_t, drained_bytes_current, stream->drained_bytes)
40     ctf_integer(uint32_t, drained_bytes_previous, stream->prev_drained_bytes)
41     ctf_integer(uint32_t, ewma_drain_rate_last, stream->ewma_rate_last_sent)
42     ctf_integer(uint32_t, ewma_drain_rate_current, stream->ewma_drain_rate)
43     ctf_integer(size_t, outbuf_len,
44                 connection_get_outbuf_len(TO_CONN(stream)))
45   )
48 /* Emitted when flow control starts measuring the drain rate. */
49 TRACEPOINT_EVENT(tor_cc, flow_decide_xon_drain_start,
50   TP_ARGS(const edge_connection_t *, stream),
51   TP_FIELDS(
52     ctf_integer(uint64_t, stream_id, TO_CONN(stream)->global_identifier)
53     ctf_integer(uint32_t, drained_bytes_current, stream->drained_bytes)
54     ctf_integer(uint32_t, drained_bytes_previous, stream->prev_drained_bytes)
55     ctf_integer(uint32_t, ewma_drain_rate_last, stream->ewma_rate_last_sent)
56     ctf_integer(uint32_t, ewma_drain_rate_current, stream->ewma_drain_rate)
57     ctf_integer(size_t, outbuf_len,
58                 connection_get_outbuf_len(TO_CONN(stream)))
59   )
62 /* Emitted when the drain rate is updated. The new_drain_rate value is what was
63  * just computed. */
64 TRACEPOINT_EVENT(tor_cc, flow_decide_xon_drain_update,
65   TP_ARGS(const edge_connection_t *, stream, uint32_t, drain_rate),
66   TP_FIELDS(
67     ctf_integer(uint64_t, stream_id, TO_CONN(stream)->global_identifier)
68     ctf_integer(uint32_t, drained_bytes_current, stream->drained_bytes)
69     ctf_integer(uint32_t, drained_bytes_previous, stream->prev_drained_bytes)
70     ctf_integer(uint32_t, new_drain_rate, drain_rate)
71     ctf_integer(uint32_t, ewma_drain_rate_last, stream->ewma_rate_last_sent)
72     ctf_integer(uint32_t, ewma_drain_rate_current, stream->ewma_drain_rate)
73     ctf_integer(size_t, outbuf_len,
74                 connection_get_outbuf_len(TO_CONN(stream)))
75   )
78 /* Emitted when an XON cell is sent due to a notice in a drain rate change. */
79 TRACEPOINT_EVENT(tor_cc, flow_decide_xon_rate_change,
80   TP_ARGS(const edge_connection_t *, stream),
81   TP_FIELDS(
82     ctf_integer(uint64_t, stream_id, TO_CONN(stream)->global_identifier)
83     ctf_integer(uint32_t, drained_bytes_current, stream->drained_bytes)
84     ctf_integer(uint32_t, drained_bytes_previous, stream->prev_drained_bytes)
85     ctf_integer(uint32_t, ewma_drain_rate_last, stream->ewma_rate_last_sent)
86     ctf_integer(uint32_t, ewma_drain_rate_current, stream->ewma_drain_rate)
87     ctf_integer(size_t, outbuf_len,
88                 connection_get_outbuf_len(TO_CONN(stream)))
89   )
92 /* Emitted when an XON cell is sent because we partially or fully drained the
93  * edge connection buffer. */
94 TRACEPOINT_EVENT(tor_cc, flow_decide_xon_partial_drain,
95   TP_ARGS(const edge_connection_t *, stream),
96   TP_FIELDS(
97     ctf_integer(uint64_t, stream_id, TO_CONN(stream)->global_identifier)
98     ctf_integer(uint32_t, drained_bytes_current, stream->drained_bytes)
99     ctf_integer(uint32_t, drained_bytes_previous, stream->prev_drained_bytes)
100     ctf_integer(uint32_t, ewma_drain_rate_last, stream->ewma_rate_last_sent)
101     ctf_integer(uint32_t, ewma_drain_rate_current, stream->ewma_drain_rate)
102     ctf_integer(size_t, outbuf_len,
103                 connection_get_outbuf_len(TO_CONN(stream)))
104   )
107 /* Emitted when we double the drain rate which is an attempt to see if we can
108  * speed things up. */
109 TRACEPOINT_EVENT(tor_cc, flow_decide_xon_drain_doubled,
110   TP_ARGS(const edge_connection_t *, stream),
111   TP_FIELDS(
112     ctf_integer(uint64_t, stream_id, TO_CONN(stream)->global_identifier)
113     ctf_integer(uint32_t, drained_bytes_current, stream->drained_bytes)
114     ctf_integer(uint32_t, drained_bytes_previous, stream->prev_drained_bytes)
115     ctf_integer(uint32_t, ewma_drain_rate_last, stream->ewma_rate_last_sent)
116     ctf_integer(uint32_t, ewma_drain_rate_current, stream->ewma_drain_rate)
117     ctf_integer(size_t, outbuf_len,
118                 connection_get_outbuf_len(TO_CONN(stream)))
119   )
122 /* XOFF */
124 /* Emitted when we send an XOFF cell. */
125 TRACEPOINT_EVENT(tor_cc, flow_decide_xoff_sending,
126   TP_ARGS(const edge_connection_t *, stream),
127   TP_FIELDS(
128     ctf_integer(uint64_t, stream_id, TO_CONN(stream)->global_identifier)
129     ctf_integer(uint32_t, drained_bytes_current, stream->drained_bytes)
130     ctf_integer(uint32_t, drained_bytes_previous, stream->prev_drained_bytes)
131     ctf_integer(uint32_t, ewma_drain_rate_last, stream->ewma_rate_last_sent)
132     ctf_integer(uint32_t, ewma_drain_rate_current, stream->ewma_drain_rate)
133     ctf_integer(size_t, outbuf_len,
134                 connection_get_outbuf_len(TO_CONN(stream)))
135   )
139  * Congestion Control
140  */
142 /* Emitted when the BDP value has been updated. */
143 TRACEPOINT_EVENT(tor_cc, bdp_update,
144   TP_ARGS(const circuit_t *, circ, const congestion_control_t *, cc,
145           uint64_t, curr_rtt_usec),
146   TP_FIELDS(
147     ctf_integer(uint64_t, circuit_ptr, circ)
148     ctf_integer(uint32_t, n_circ_id, circ->n_circ_id)
149     ctf_integer(uint64_t, min_rtt_usec, cc->min_rtt_usec)
150     ctf_integer(uint64_t, curr_rtt_usec, curr_rtt_usec)
151     ctf_integer(uint64_t, ewma_rtt_usec, cc->ewma_rtt_usec)
152     ctf_integer(uint64_t, max_rtt_usec, cc->max_rtt_usec)
153     ctf_integer(uint64_t, bdp_cwnd_rtt, cc->bdp)
154   )
157 #endif /* LTTNG_CC_INC || TRACEPOINT_HEADER_MULTI_READ */
159 /* Must be included after the probes declaration. */
160 #include <lttng/tracepoint-event.h>
162 #endif /* USE_TRACING_INSTRUMENTATION_LTTNG */