session stats improvements
This commit is contained in:
parent
952ed687cd
commit
927f9623cb
|
@ -7,32 +7,40 @@ import os, sys, time
|
||||||
|
|
||||||
ignore = ['download rate', 'disk block buffers']
|
ignore = ['download rate', 'disk block buffers']
|
||||||
|
|
||||||
keys = ['upload rate', 'download rate', 'downloading torrents', \
|
stat = open(sys.argv[1])
|
||||||
'seeding torrents', 'peers', 'connecting peers', 'disk block buffers']
|
line = stat.readline()
|
||||||
|
while not 'second:' in line:
|
||||||
|
line = stat.readline()
|
||||||
|
|
||||||
axes = ['x1y2', 'x1y2', 'x1y1', 'x1y1', 'x1y1', 'x1y1', 'x1y1']
|
keys = line.strip().split(':')[1:]
|
||||||
|
|
||||||
out = open('session_stats.gnuplot', 'wb')
|
axes = ['x1y2', 'x1y2', 'x1y1', 'x1y1', 'x1y1', 'x1y1', 'x1y1', 'x1y1']
|
||||||
print >>out, "set term png size 1200,700"
|
|
||||||
print >>out, 'set output "session_stats.png"'
|
|
||||||
print >>out, 'set xrange [0:*]'
|
|
||||||
print >>out, 'set xlabel "time (s)"'
|
|
||||||
print >>out, 'set ylabel "number"'
|
|
||||||
print >>out, 'set y2label "Rate (B/s)"'
|
|
||||||
print >>out, 'set y2range [0:*]'
|
|
||||||
print >>out, 'set y2tics 20000'
|
|
||||||
print >>out, "set style data lines"
|
|
||||||
print >>out, "set key box"
|
|
||||||
print >>out, 'plot',
|
|
||||||
column = 2
|
|
||||||
for k in keys:
|
|
||||||
if k in ignore:
|
|
||||||
column = column + 1
|
|
||||||
continue
|
|
||||||
print >>out, ' "%s" using 1:%d title "%s" axes %s with steps,' % (sys.argv[1], column, k, axes[column-2]),
|
|
||||||
column = column + 1
|
|
||||||
print >>out, 'x=0'
|
|
||||||
out.close()
|
|
||||||
|
|
||||||
os.system('gnuplot session_stats.gnuplot');
|
def gen_report(name, lines):
|
||||||
|
out = open('session_stats_%s.gnuplot' % name, 'wb')
|
||||||
|
print >>out, "set term png size 1200,700"
|
||||||
|
print >>out, 'set output "session_stats_%s.png"' % name
|
||||||
|
print >>out, 'set xrange [0:*]'
|
||||||
|
print >>out, 'set xlabel "time (s)"'
|
||||||
|
print >>out, 'set ylabel "number"'
|
||||||
|
print >>out, 'set y2label "Rate (B/s)"'
|
||||||
|
print >>out, 'set y2range [0:*]'
|
||||||
|
print >>out, 'set y2tics 10000'
|
||||||
|
print >>out, "set style data lines"
|
||||||
|
print >>out, "set key box"
|
||||||
|
print >>out, 'plot',
|
||||||
|
column = 2
|
||||||
|
for k in keys:
|
||||||
|
if k not in lines:
|
||||||
|
column = column + 1
|
||||||
|
continue
|
||||||
|
print >>out, ' "%s" using 1:%d title "%s" axes %s with steps,' % (sys.argv[1], column, k, axes[column-2]),
|
||||||
|
column = column + 1
|
||||||
|
print >>out, 'x=0'
|
||||||
|
out.close()
|
||||||
|
os.system('gnuplot session_stats_%s.gnuplot' % name);
|
||||||
|
|
||||||
|
gen_report('rates', ['upload rate', 'download rate', 'downloading torrents', 'seeding torrents', 'peers', 'unchoked peers'])
|
||||||
|
gen_report('peers', ['peers', 'connecting peers', 'unchoked peers'])
|
||||||
|
gen_report('buffers', ['upload rate', 'download rate', 'disk block buffers'])
|
||||||
|
|
||||||
|
|
|
@ -243,7 +243,7 @@ namespace aux {
|
||||||
m_stats_logger.open("session_stats.log", std::ios::trunc);
|
m_stats_logger.open("session_stats.log", std::ios::trunc);
|
||||||
m_stats_logger <<
|
m_stats_logger <<
|
||||||
"second:upload rate:download rate:downloading torrents:seeding torrents"
|
"second:upload rate:download rate:downloading torrents:seeding torrents"
|
||||||
":peers:connecting peers:disk block buffers\n\n";
|
":peers:connecting peers:disk block buffers:unchoked peers\n\n";
|
||||||
m_buffer_usage_logger.open("buffer_stats.log", std::ios::trunc);
|
m_buffer_usage_logger.open("buffer_stats.log", std::ios::trunc);
|
||||||
m_second_counter = 0;
|
m_second_counter = 0;
|
||||||
m_buffer_allocations = 0;
|
m_buffer_allocations = 0;
|
||||||
|
@ -1036,6 +1036,12 @@ namespace aux {
|
||||||
++m_second_counter;
|
++m_second_counter;
|
||||||
int downloading_torrents = 0;
|
int downloading_torrents = 0;
|
||||||
int seeding_torrents = 0;
|
int seeding_torrents = 0;
|
||||||
|
static size_type downloaded = 0;
|
||||||
|
static size_type uploaded = 0;
|
||||||
|
size_type download_rate = (m_stat.total_download() - downloaded) / tick_interval;
|
||||||
|
size_type upload_rate = (m_stat.total_upload() - uploaded) / tick_interval;
|
||||||
|
downloaded = m_stat.total_download();
|
||||||
|
uploaded = m_stat.total_upload();
|
||||||
for (torrent_map::iterator i = m_torrents.begin()
|
for (torrent_map::iterator i = m_torrents.begin()
|
||||||
, end(m_torrents.end()); i != end; ++i)
|
, end(m_torrents.end()); i != end; ++i)
|
||||||
{
|
{
|
||||||
|
@ -1046,24 +1052,29 @@ namespace aux {
|
||||||
}
|
}
|
||||||
int num_complete_connections = 0;
|
int num_complete_connections = 0;
|
||||||
int num_half_open = 0;
|
int num_half_open = 0;
|
||||||
|
int unchoked_peers = 0;
|
||||||
for (connection_map::iterator i = m_connections.begin()
|
for (connection_map::iterator i = m_connections.begin()
|
||||||
, end(m_connections.end()); i != end; ++i)
|
, end(m_connections.end()); i != end; ++i)
|
||||||
{
|
{
|
||||||
if ((*i)->is_connecting())
|
if ((*i)->is_connecting())
|
||||||
++num_half_open;
|
++num_half_open;
|
||||||
else
|
else
|
||||||
|
{
|
||||||
++num_complete_connections;
|
++num_complete_connections;
|
||||||
|
if (!(*i)->is_choked()) ++unchoked_peers;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_stats_logger
|
m_stats_logger
|
||||||
<< m_second_counter << "\t"
|
<< m_second_counter << "\t"
|
||||||
<< m_stat.upload_rate() << "\t"
|
<< upload_rate << "\t"
|
||||||
<< m_stat.download_rate() << "\t"
|
<< download_rate << "\t"
|
||||||
<< downloading_torrents << "\t"
|
<< downloading_torrents << "\t"
|
||||||
<< seeding_torrents << "\t"
|
<< seeding_torrents << "\t"
|
||||||
<< num_complete_connections << "\t"
|
<< num_complete_connections << "\t"
|
||||||
<< num_half_open << "\t"
|
<< num_half_open << "\t"
|
||||||
<< m_disk_thread.disk_allocations() << "\t"
|
<< m_disk_thread.disk_allocations() << "\t"
|
||||||
|
<< unchoked_peers << "\t"
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue