mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
Relocate CBT event to control_events.c
Needed to satisfy practracker.
This commit is contained in:
committed by
George Kadianakis
parent
8e7a069130
commit
220ed863ce
@@ -1890,61 +1890,3 @@ circuit_build_times_update_last_circ(circuit_build_times_t *cbt)
|
||||
{
|
||||
cbt->last_circ_at = approx_time();
|
||||
}
|
||||
|
||||
void
|
||||
cbt_control_event_buildtimeout_set(const circuit_build_times_t *cbt,
|
||||
buildtimeout_set_event_t type)
|
||||
{
|
||||
char *args = NULL;
|
||||
double qnt;
|
||||
double timeout_rate = 0.0;
|
||||
double close_rate = 0.0;
|
||||
|
||||
switch (type) {
|
||||
case BUILDTIMEOUT_SET_EVENT_RESET:
|
||||
case BUILDTIMEOUT_SET_EVENT_SUSPENDED:
|
||||
case BUILDTIMEOUT_SET_EVENT_DISCARD:
|
||||
qnt = 1.0;
|
||||
break;
|
||||
case BUILDTIMEOUT_SET_EVENT_COMPUTED:
|
||||
case BUILDTIMEOUT_SET_EVENT_RESUME:
|
||||
default:
|
||||
qnt = circuit_build_times_quantile_cutoff();
|
||||
break;
|
||||
}
|
||||
|
||||
/* The timeout rate is the ratio of the timeout count over
|
||||
* the total number of circuits attempted. The total number of
|
||||
* circuits is (timeouts+succeeded), since every circuit
|
||||
* either succeeds, or times out. "Closed" circuits are
|
||||
* MEASURE_TIMEOUT circuits whose measurement period expired.
|
||||
* All MEASURE_TIMEOUT circuits are counted in the timeouts stat
|
||||
* before transitioning to MEASURE_TIMEOUT (in
|
||||
* circuit_build_times_mark_circ_as_measurement_only()).
|
||||
* MEASURE_TIMEOUT circuits that succeed are *not* counted as
|
||||
* "succeeded". See circuit_build_times_handle_completed_hop().
|
||||
*
|
||||
* We cast the denominator
|
||||
* to promote it to double before the addition, to avoid int32
|
||||
* overflow. */
|
||||
const double total_circuits =
|
||||
((double)cbt->num_circ_timeouts) + cbt->num_circ_succeeded;
|
||||
if (total_circuits >= 1.0) {
|
||||
timeout_rate = cbt->num_circ_timeouts / total_circuits;
|
||||
close_rate = cbt->num_circ_closed / total_circuits;
|
||||
}
|
||||
|
||||
tor_asprintf(&args, "TOTAL_TIMES=%lu "
|
||||
"TIMEOUT_MS=%lu XM=%lu ALPHA=%f CUTOFF_QUANTILE=%f "
|
||||
"TIMEOUT_RATE=%f CLOSE_MS=%lu CLOSE_RATE=%f",
|
||||
(unsigned long)cbt->total_build_times,
|
||||
(unsigned long)cbt->timeout_ms,
|
||||
(unsigned long)cbt->Xm, cbt->alpha, qnt,
|
||||
timeout_rate,
|
||||
(unsigned long)cbt->close_ms,
|
||||
close_rate);
|
||||
|
||||
control_event_buildtimeout_set(type, args);
|
||||
|
||||
tor_free(args);
|
||||
}
|
||||
|
||||
@@ -12,8 +12,6 @@
|
||||
#ifndef TOR_CIRCUITSTATS_H
|
||||
#define TOR_CIRCUITSTATS_H
|
||||
|
||||
#include "feature/control/control_events.h"
|
||||
|
||||
const circuit_build_times_t *get_circuit_build_times(void);
|
||||
circuit_build_times_t *get_circuit_build_times_mutable(void);
|
||||
double get_circuit_build_close_time_ms(void);
|
||||
@@ -52,9 +50,6 @@ double circuit_build_times_close_rate(const circuit_build_times_t *cbt);
|
||||
void circuit_build_times_update_last_circ(circuit_build_times_t *cbt);
|
||||
void circuit_build_times_mark_circ_as_measurement_only(origin_circuit_t *circ);
|
||||
void circuit_build_times_reset(circuit_build_times_t *cbt);
|
||||
void cbt_control_event_buildtimeout_set(
|
||||
const circuit_build_times_t *cbt,
|
||||
buildtimeout_set_event_t type);
|
||||
|
||||
/** Total size of the circuit timeout history to accumulate.
|
||||
* 1000 is approx 2.5 days worth of continual-use circuits. */
|
||||
@@ -163,7 +158,6 @@ void circuit_build_times_network_is_live(circuit_build_times_t *cbt);
|
||||
int circuit_build_times_network_check_live(const circuit_build_times_t *cbt);
|
||||
void circuit_build_times_network_circ_success(circuit_build_times_t *cbt);
|
||||
|
||||
#ifdef CIRCUITSTATS_PRIVATE
|
||||
/** Information about the state of our local network connection */
|
||||
typedef struct {
|
||||
/** The timestamp we last completed a TLS handshake or received a cell */
|
||||
@@ -213,6 +207,5 @@ struct circuit_build_times_t {
|
||||
uint32_t num_circ_closed;
|
||||
|
||||
};
|
||||
#endif /* defined(CIRCUITSTATS_PRIVATE) */
|
||||
|
||||
#endif /* !defined(TOR_CIRCUITSTATS_H) */
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include "core/mainloop/mainloop.h"
|
||||
#include "core/or/channeltls.h"
|
||||
#include "core/or/circuitlist.h"
|
||||
#include "core/or/circuitstats.h"
|
||||
#include "core/or/command.h"
|
||||
#include "core/or/connection_edge.h"
|
||||
#include "core/or/connection_or.h"
|
||||
@@ -141,6 +142,64 @@ clear_circ_bw_fields(void)
|
||||
SMARTLIST_FOREACH_END(circ);
|
||||
}
|
||||
|
||||
/* Helper to emit the BUILDTIMEOUT_SET circuit build time event */
|
||||
void
|
||||
cbt_control_event_buildtimeout_set(const circuit_build_times_t *cbt,
|
||||
buildtimeout_set_event_t type)
|
||||
{
|
||||
char *args = NULL;
|
||||
double qnt;
|
||||
double timeout_rate = 0.0;
|
||||
double close_rate = 0.0;
|
||||
|
||||
switch (type) {
|
||||
case BUILDTIMEOUT_SET_EVENT_RESET:
|
||||
case BUILDTIMEOUT_SET_EVENT_SUSPENDED:
|
||||
case BUILDTIMEOUT_SET_EVENT_DISCARD:
|
||||
qnt = 1.0;
|
||||
break;
|
||||
case BUILDTIMEOUT_SET_EVENT_COMPUTED:
|
||||
case BUILDTIMEOUT_SET_EVENT_RESUME:
|
||||
default:
|
||||
qnt = circuit_build_times_quantile_cutoff();
|
||||
break;
|
||||
}
|
||||
|
||||
/* The timeout rate is the ratio of the timeout count over
|
||||
* the total number of circuits attempted. The total number of
|
||||
* circuits is (timeouts+succeeded), since every circuit
|
||||
* either succeeds, or times out. "Closed" circuits are
|
||||
* MEASURE_TIMEOUT circuits whose measurement period expired.
|
||||
* All MEASURE_TIMEOUT circuits are counted in the timeouts stat
|
||||
* before transitioning to MEASURE_TIMEOUT (in
|
||||
* circuit_build_times_mark_circ_as_measurement_only()).
|
||||
* MEASURE_TIMEOUT circuits that succeed are *not* counted as
|
||||
* "succeeded". See circuit_build_times_handle_completed_hop().
|
||||
*
|
||||
* We cast the denominator
|
||||
* to promote it to double before the addition, to avoid int32
|
||||
* overflow. */
|
||||
const double total_circuits =
|
||||
((double)cbt->num_circ_timeouts) + cbt->num_circ_succeeded;
|
||||
if (total_circuits >= 1.0) {
|
||||
timeout_rate = cbt->num_circ_timeouts / total_circuits;
|
||||
close_rate = cbt->num_circ_closed / total_circuits;
|
||||
}
|
||||
|
||||
tor_asprintf(&args, "TOTAL_TIMES=%lu "
|
||||
"TIMEOUT_MS=%lu XM=%lu ALPHA=%f CUTOFF_QUANTILE=%f "
|
||||
"TIMEOUT_RATE=%f CLOSE_MS=%lu CLOSE_RATE=%f",
|
||||
(unsigned long)cbt->total_build_times,
|
||||
(unsigned long)cbt->timeout_ms,
|
||||
(unsigned long)cbt->Xm, cbt->alpha, qnt,
|
||||
timeout_rate,
|
||||
(unsigned long)cbt->close_ms,
|
||||
close_rate);
|
||||
|
||||
control_event_buildtimeout_set(type, args);
|
||||
|
||||
tor_free(args);
|
||||
}
|
||||
/** Set <b>global_event_mask*</b> to the bitwise OR of each live control
|
||||
* connection's event_mask field. */
|
||||
void
|
||||
|
||||
@@ -223,6 +223,8 @@ void control_event_hs_descriptor_content(const char *onion_address,
|
||||
const char *desc_id,
|
||||
const char *hsdir_fp,
|
||||
const char *content);
|
||||
void cbt_control_event_buildtimeout_set(const circuit_build_times_t *cbt,
|
||||
buildtimeout_set_event_t type);
|
||||
|
||||
void control_events_free_all(void);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user