tor

The Tor anonymity network
git clone https://git.dasho.dev/tor.git
Log | Files | Refs | README | LICENSE

commit ac9eebd63637d39b2a55d9a40c748a197fd47f93
parent 5c4da2cacd308e63293a67a4e595044d24dd56a6
Author: Fernando Fernandez Mancera <ffernandezmancera@gmail.com>
Date:   Wed, 20 Dec 2017 18:31:30 +0100

Add some values to OOM log msg #24501

Exposing cell_queues_get_total_allocation(), buf_get_total_allocation(),
tor_compress_get_total_allocation(), tor_compress_get_total_allocation() when
hit MaxMemInQueues threshold.

Fixes #24501

Signed-off-by: Fernando Fernandez Mancera <ffernandezmancera@gmail.com>

Diffstat:
Achanges/ticket24501 | 3+++
Msrc/or/circuitlist.c | 12+++++++++---
Msrc/or/relay.c | 2+-
Msrc/or/relay.h | 2+-
4 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/changes/ticket24501 b/changes/ticket24501 @@ -0,0 +1,3 @@ + o Minor features (logging): + - Make the log more quantitative when we hit MaxMemInQueues threshold + exposing some values. Closes ticket 24501. diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c @@ -2329,9 +2329,15 @@ circuits_handle_oom(size_t current_allocation) int n_circuits_killed=0; int n_dirconns_killed=0; uint32_t now_ms; - log_notice(LD_GENERAL, "We're low on memory. Killing circuits with " - "over-long queues. (This behavior is controlled by " - "MaxMemInQueues.)"); + log_notice(LD_GENERAL, "We're low on memory (cell queues total alloc: %zu," + " buffer total alloc: %zu, tor compress total alloc: %zu," + " rendezvous cache total alloc: %zu). Killing circuits with" + " over-long queues. (This behavior is controlled by" + " MaxMemInQueues.)", + cell_queues_get_total_allocation(), + buf_get_total_allocation(), + tor_compress_get_total_allocation(), + rend_cache_get_total_allocation()); { size_t mem_target = (size_t)(get_options()->MaxMemInQueues * diff --git a/src/or/relay.c b/src/or/relay.c @@ -2530,7 +2530,7 @@ packed_cell_mem_cost(void) } /* DOCDOC */ -STATIC size_t +size_t cell_queues_get_total_allocation(void) { return total_cells_allocated * packed_cell_mem_cost(); diff --git a/src/or/relay.h b/src/or/relay.h @@ -17,6 +17,7 @@ extern uint64_t stats_n_relay_cells_delivered; int circuit_receive_relay_cell(cell_t *cell, circuit_t *circ, cell_direction_t cell_direction); +size_t cell_queues_get_total_allocation(void); void relay_header_pack(uint8_t *dest, const relay_header_t *src); void relay_header_unpack(relay_header_t *dest, const uint8_t *src); @@ -102,7 +103,6 @@ STATIC int connection_edge_process_resolved_cell(edge_connection_t *conn, const relay_header_t *rh); STATIC packed_cell_t *packed_cell_new(void); STATIC packed_cell_t *cell_queue_pop(cell_queue_t *queue); -STATIC size_t cell_queues_get_total_allocation(void); STATIC int cell_queues_check_size(void); #endif /* defined(RELAY_PRIVATE) */