mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-28 14:23:30 +01:00
Fix up some cell-queue stats issues in rephist.c
- Document the structure and variables. - Make circuits_for_buffer_stats into a static variable. - Don't die horribly if interval_length is 0. - Remove the unused local_circ_id field. - Reorder the fields of circ_buffer_stats_t for cleaner alignment layout.
This commit is contained in:
parent
ba0cd8094f
commit
71fb2af62c
@ -2330,14 +2330,19 @@ rep_hist_buffer_stats_init(time_t now)
|
|||||||
start_of_buffer_stats_interval = now;
|
start_of_buffer_stats_interval = now;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Statistics from a single circuit. Collected when the circuit closes, or
|
||||||
|
* when we flush statistics to disk. */
|
||||||
typedef struct circ_buffer_stats_t {
|
typedef struct circ_buffer_stats_t {
|
||||||
uint32_t processed_cells;
|
/** Average number of cells in the circuit's queue */
|
||||||
double mean_num_cells_in_queue;
|
double mean_num_cells_in_queue;
|
||||||
|
/** Average time a cell waits in the queue. */
|
||||||
double mean_time_cells_in_queue;
|
double mean_time_cells_in_queue;
|
||||||
uint32_t local_circ_id;
|
/** Total number of cells sent over this circuit */
|
||||||
|
uint32_t processed_cells;
|
||||||
} circ_buffer_stats_t;
|
} circ_buffer_stats_t;
|
||||||
|
|
||||||
smartlist_t *circuits_for_buffer_stats = NULL;
|
/** List of circ_buffer_stats_t. */
|
||||||
|
static smartlist_t *circuits_for_buffer_stats = NULL;
|
||||||
|
|
||||||
/** Remember cell statistics for circuit <b>circ</b> at time
|
/** Remember cell statistics for circuit <b>circ</b> at time
|
||||||
* <b>end_of_interval</b> and reset cell counters in case the circuit
|
* <b>end_of_interval</b> and reset cell counters in case the circuit
|
||||||
@ -2361,6 +2366,8 @@ rep_hist_buffer_stats_add_circ(circuit_t *circ, time_t end_of_interval)
|
|||||||
circ->timestamp_created.tv_sec :
|
circ->timestamp_created.tv_sec :
|
||||||
start_of_buffer_stats_interval;
|
start_of_buffer_stats_interval;
|
||||||
interval_length = (int) (end_of_interval - start_of_interval);
|
interval_length = (int) (end_of_interval - start_of_interval);
|
||||||
|
if (interval_length <= 0)
|
||||||
|
return;
|
||||||
stat = tor_malloc_zero(sizeof(circ_buffer_stats_t));
|
stat = tor_malloc_zero(sizeof(circ_buffer_stats_t));
|
||||||
stat->processed_cells = orcirc->processed_cells;
|
stat->processed_cells = orcirc->processed_cells;
|
||||||
/* 1000.0 for s -> ms; 2.0 because of app-ward and exit-ward queues */
|
/* 1000.0 for s -> ms; 2.0 because of app-ward and exit-ward queues */
|
||||||
|
Loading…
Reference in New Issue
Block a user