log buffer sizes passed to read() and write() at the socket layer (to identify performane problems)

This commit is contained in:
Arvid Norberg 2011-10-17 06:54:02 +00:00
parent aab4cb6937
commit 8b6522a763
4 changed files with 32 additions and 0 deletions

View File

@ -959,6 +959,10 @@ namespace libtorrent
max_messages
};
int m_num_messages[max_messages];
// 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192,
// 16384, 32768, 65536, 131072, 262144, 524288, 1048576
int m_send_buffer_sizes[18];
int m_recv_buffer_sizes[18];
#endif
// each second tick the timer takes a little

View File

@ -154,6 +154,8 @@ reports = [
'read_counter', 'write_counter', 'tick_counter', 'lsd_counter', \
'lsd_peer_counter', 'udp_counter', 'accept_counter', 'disk_queue_counter', \
'disk_read_counter', 'disk_write_counter']),
('send_buffer_sizes', 'num', '', '', ['up 8', 'up 16', 'up 32', 'up 64', 'up 128', 'up 256', 'up 512', 'up 1024', 'up 2048', 'up 4096', 'up 8192', 'up 16384', 'up 32768', 'up 65536', 'up 131072', 'up 262144']),
('recv_buffer_sizes', 'num', '', '', ['down 8', 'down 16', 'down 32', 'down 64', 'down 128', 'down 256', 'down 512', 'down 1024', 'down 2048', 'down 4096', 'down 8192', 'down 16384', 'down 32768', 'down 65536', 'down 131072', 'down 262144']),
# ('absolute_waste', 'num', '', ['failed bytes', 'redundant bytes', 'download rate']),
#somewhat uninteresting stats

View File

@ -5028,6 +5028,12 @@ namespace libtorrent
{
#ifdef TORRENT_STATS
++m_ses.m_num_messages[aux::session_impl::on_read_counter];
int size = 8;
int index = 0;
while (bytes_transferred > size) { size <<= 1; ++index; }
int num_max = sizeof(m_ses.m_recv_buffer_sizes)/sizeof(m_ses.m_recv_buffer_sizes[0]);
if (index >= num_max) index = num_max - 1;
++m_ses.m_recv_buffer_sizes[index];
#endif
TORRENT_ASSERT(m_ses.is_network_thread());
@ -5370,6 +5376,12 @@ namespace libtorrent
{
#ifdef TORRENT_STATS
++m_ses.m_num_messages[aux::session_impl::on_write_counter];
int size = 8;
int index = 0;
while (bytes_transferred > size) { size <<= 1; ++index; }
int num_max = sizeof(m_ses.m_send_buffer_sizes)/sizeof(m_ses.m_send_buffer_sizes[0]);
if (index >= num_max) index = num_max - 1;
++m_ses.m_send_buffer_sizes[index];
#endif
TORRENT_ASSERT(m_ses.is_network_thread());

View File

@ -1056,6 +1056,8 @@ namespace aux {
":disk_queue_counter"
":disk_read_counter"
":disk_write_counter"
":up 8:up 16:up 32:up 64:up 128:up 256:up 512:up 1024:up 2048:up 4096:up 8192:up 16384:up 32768:up 65536:up 131072:up 262144:up 524288:up 1048576"
":down 8:down 16:down 32:down 64:down 128:down 256:down 512:down 1024:down 2048:down 4096:down 8192:down 16384:down 32768:down 65536:down 131072:down 262144:down 524288:down 1048576"
"\n\n", m_stats_logger);
}
#endif
@ -3239,6 +3241,8 @@ namespace aux {
m_banned_for_hash_failure = 0;
memset(m_num_messages, 0, sizeof(m_num_messages));
memset(m_send_buffer_sizes, 0, sizeof(m_send_buffer_sizes));
memset(m_recv_buffer_sizes, 0, sizeof(m_recv_buffer_sizes));
}
void session_impl::print_log_line(int tick_interval_ms, ptime now)
@ -3547,6 +3551,16 @@ namespace aux {
{
STAT_LOG(d, m_num_messages[i]);
}
int num_max = sizeof(m_send_buffer_sizes)/sizeof(m_send_buffer_sizes[0]);
for (int i = 0; i < num_max; ++i)
{
STAT_LOG(d, m_send_buffer_sizes[i]);
}
num_max = sizeof(m_recv_buffer_sizes)/sizeof(m_recv_buffer_sizes[0]);
for (int i = 0; i < num_max; ++i)
{
STAT_LOG(d, m_recv_buffer_sizes[i]);
}
fprintf(m_stats_logger, "\n");