summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2008-04-10 15:12:24 +0000
committerNick Mathewson <nickm@torproject.org>2008-04-10 15:12:24 +0000
commitb927ede48c3785a14e15b855061aaffe8dc42810 (patch)
tree522111c11d630f0dce21b37e819bd3628ae0aa2a
parentc776da9537147d138e22785ca2564696b0439287 (diff)
downloadtor-b927ede48c3785a14e15b855061aaffe8dc42810.tar.gz
tor-b927ede48c3785a14e15b855061aaffe8dc42810.zip
r15161@31-33-107: nickm | 2008-04-10 11:11:58 -0400
Make dumpstats() log the size and fullness of openssl-internal buffers, so I can test my hypothesis that many of them are empty, and my alternative hypothesis that many of them are mostly empty, against the null hypothesis that we really need to be burning 32K per open OR connection on this. svn:r14350
-rw-r--r--ChangeLog2
-rw-r--r--src/common/tortls.c11
-rw-r--r--src/common/tortls.h4
-rw-r--r--src/or/main.c12
4 files changed, 29 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 0d34bcf386..e14dfd11a8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -60,6 +60,7 @@ Changes in version 0.2.1.1-alpha - 2008-??-??
descriptors we need to keep around when we're cleaning out old
router descriptors. This speeds up the computation significantly, and
may reduce fragmentation.
+ - Make dumpstats() log the fullness and size of openssl-internal buffers.
o Code simplifications and refactoring:
- Refactor code using connection_ap_handshake_attach_circuit() to
@@ -68,6 +69,7 @@ Changes in version 0.2.1.1-alpha - 2008-??-??
- Add a macro to implement the common pattern of iterating through
two parallel lists in lockstep.
+
Changes in version 0.2.0.23-rc - 2008-03-24
o Major bugfixes:
- When a tunneled directory request is made to a directory server
diff --git a/src/common/tortls.c b/src/common/tortls.c
index 07cf17bc17..33666166b5 100644
--- a/src/common/tortls.c
+++ b/src/common/tortls.c
@@ -1346,3 +1346,14 @@ tor_tls_used_v1_handshake(tor_tls_t *tls)
return 1;
}
+/** DOCDOC */
+void
+tor_tls_get_buffer_sizes(tor_tls_t *tls,
+ int *rbuf_capacity, int *rbuf_bytes,
+ int *wbuf_capacity, int *wbuf_bytes)
+{
+ *rbuf_capacity = tls->ssl->s3->rbuf.len;
+ *wbuf_capacity = tls->ssl->s3->wbuf.len;
+ *rbuf_bytes = tls->ssl->s3->rbuf.left;
+ *wbuf_bytes = tls->ssl->s3->wbuf.left;
+}
diff --git a/src/common/tortls.h b/src/common/tortls.h
index 52c8350fec..211c8255ba 100644
--- a/src/common/tortls.h
+++ b/src/common/tortls.h
@@ -73,6 +73,10 @@ size_t tor_tls_get_forced_write_size(tor_tls_t *tls);
void tor_tls_get_n_raw_bytes(tor_tls_t *tls,
size_t *n_read, size_t *n_written);
+void tor_tls_get_buffer_sizes(tor_tls_t *tls,
+ int *rbuf_capacity, int *rbuf_bytes,
+ int *wbuf_capacity, int *wbuf_bytes);
+
int tor_tls_used_v1_handshake(tor_tls_t *tls);
/* Log and abort if there are unhandled TLS errors in OpenSSL's error stack.
diff --git a/src/or/main.c b/src/or/main.c
index 36c87df8de..55803ae15c 100644
--- a/src/or/main.c
+++ b/src/or/main.c
@@ -1611,6 +1611,7 @@ dumpstats(int severity)
{
time_t now = time(NULL);
time_t elapsed;
+ int rbuf_cap, wbuf_cap, rbuf_len, wbuf_len;
log(severity, LD_GENERAL, "Dumping stats:");
@@ -1638,6 +1639,17 @@ dumpstats(int severity)
(int)buf_datalen(conn->outbuf),
(int)buf_allocation(conn->outbuf),
(int)(now - conn->timestamp_lastwritten));
+ if (conn->type == CONN_TYPE_OR) {
+ or_connection_t *or_conn = TO_OR_CONN(conn);
+ if (or_conn->tls) {
+ tor_tls_get_buffer_sizes(or_conn->tls, &rbuf_cap, &rbuf_len,
+ &wbuf_cap, &wbuf_len);
+ log(severity, LD_GENERAL,
+ "Conn %d: %d/%d bytes used on openssl read buffer; "
+ "%d/%d bytes used on write buffer.",
+ i, rbuf_len, rbuf_cap, wbuf_len, wbuf_cap);
+ }
+ }
}
circuit_dump_by_conn(conn, severity); /* dump info about all the circuits
* using this conn */