log stats of incoming piece requests
This commit is contained in:
@@ -331,6 +331,10 @@ namespace libtorrent
|
||||
{
|
||||
INVARIANT_CHECK;
|
||||
|
||||
#ifdef TORRENT_STATS
|
||||
++m_ses.m_piece_rejects;
|
||||
#endif
|
||||
|
||||
if (!m_supports_fast) return;
|
||||
|
||||
TORRENT_ASSERT(m_sent_handshake && m_sent_bitfield);
|
||||
|
@@ -2023,6 +2023,10 @@ namespace libtorrent
|
||||
boost::shared_ptr<torrent> t = m_torrent.lock();
|
||||
TORRENT_ASSERT(t);
|
||||
|
||||
#ifdef TORRENT_STATS
|
||||
++m_ses.m_piece_requests;
|
||||
#endif
|
||||
|
||||
#if defined TORRENT_VERBOSE_LOGGING
|
||||
peer_log("<== REQUEST [ piece: %d s: %d l: %d ]"
|
||||
, r.piece, r.start, r.length);
|
||||
@@ -2031,6 +2035,9 @@ namespace libtorrent
|
||||
if (m_superseed_piece != -1
|
||||
&& r.piece != m_superseed_piece)
|
||||
{
|
||||
#ifdef TORRENT_STATS
|
||||
++m_ses.m_invalid_piece_requests;
|
||||
#endif
|
||||
++m_num_invalid_requests;
|
||||
#if defined TORRENT_VERBOSE_LOGGING || defined TORRENT_ERROR_LOGGING
|
||||
peer_log("*** INVALID_REQUEST [ piece not superseeded "
|
||||
@@ -2066,6 +2073,9 @@ namespace libtorrent
|
||||
|
||||
if (!t->valid_metadata())
|
||||
{
|
||||
#ifdef TORRENT_STATS
|
||||
++m_ses.m_invalid_piece_requests;
|
||||
#endif
|
||||
// if we don't have valid metadata yet,
|
||||
// we shouldn't get a request
|
||||
#if defined TORRENT_VERBOSE_LOGGING || defined TORRENT_ERROR_LOGGING
|
||||
@@ -2079,6 +2089,9 @@ namespace libtorrent
|
||||
|
||||
if (int(m_requests.size()) > m_ses.settings().max_allowed_in_request_queue)
|
||||
{
|
||||
#ifdef TORRENT_STATS
|
||||
++m_ses.m_max_piece_requests;
|
||||
#endif
|
||||
// don't allow clients to abuse our
|
||||
// memory consumption.
|
||||
// ignore requests if the client
|
||||
@@ -2115,6 +2128,9 @@ namespace libtorrent
|
||||
peer_log("*** REJECTING REQUEST [ peer choked and piece not in allowed fast set ]");
|
||||
peer_log(" ==> REJECT_PIECE [ piece: %d | s: %d | l: %d ]"
|
||||
, r.piece, r.start, r.length);
|
||||
#endif
|
||||
#ifdef TORRENT_STATS
|
||||
++m_ses.m_choked_piece_requests;
|
||||
#endif
|
||||
write_reject_request(r);
|
||||
++m_choke_rejects;
|
||||
@@ -2148,6 +2164,9 @@ namespace libtorrent
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef TORRENT_STATS
|
||||
++m_ses.m_invalid_piece_requests;
|
||||
#endif
|
||||
#if defined TORRENT_VERBOSE_LOGGING || defined TORRENT_ERROR_LOGGING
|
||||
peer_log("*** INVALID_REQUEST [ "
|
||||
"i: %d t: %d n: %d h: %d block_limit: %d ]"
|
||||
@@ -2682,6 +2701,9 @@ namespace libtorrent
|
||||
|
||||
if (i != m_requests.end())
|
||||
{
|
||||
#ifdef TORRENT_STATS
|
||||
++m_ses.m_cancelled_piece_requests;
|
||||
#endif
|
||||
m_requests.erase(i);
|
||||
#ifdef TORRENT_VERBOSE_LOGGING
|
||||
peer_log("==> REJECT_PIECE [ piece: %d s: %d l: %d ]"
|
||||
@@ -3142,6 +3164,9 @@ namespace libtorrent
|
||||
continue;
|
||||
}
|
||||
peer_request const& r = *i;
|
||||
#ifdef TORRENT_STATS
|
||||
++m_ses.m_choked_piece_requests;
|
||||
#endif
|
||||
#ifdef TORRENT_VERBOSE_LOGGING
|
||||
peer_log("==> REJECT_PIECE [ piece: %d s: %d l: %d ]"
|
||||
, r.piece , r.start , r.length);
|
||||
|
@@ -1267,6 +1267,14 @@ namespace aux {
|
||||
|
||||
":torrents want more peers"
|
||||
":average peers per limit"
|
||||
|
||||
":piece requests"
|
||||
":max piece requests"
|
||||
":invalid piece requests"
|
||||
":choked piece requests"
|
||||
":cancelled piece requests"
|
||||
":piece rejects"
|
||||
|
||||
"\n\n", m_stats_logger);
|
||||
}
|
||||
#endif
|
||||
@@ -3568,6 +3576,13 @@ namespace aux {
|
||||
m_num_banned_peers = 0;
|
||||
m_banned_for_hash_failure = 0;
|
||||
|
||||
m_piece_requests = 0;
|
||||
m_max_piece_requests = 0;
|
||||
m_invalid_piece_requests = 0;
|
||||
m_choked_piece_requests = 0;
|
||||
m_cancelled_piece_requests = 0;
|
||||
m_piece_rejects = 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));
|
||||
@@ -3961,6 +3976,13 @@ namespace aux {
|
||||
STAT_LOG(d, num_want_more_peers);
|
||||
STAT_LOG(f, total_peers_limit == 0 ? 0 : float(num_limited_peers) / total_peers_limit);
|
||||
|
||||
STAT_LOG(d, m_piece_requests);
|
||||
STAT_LOG(d, m_max_piece_requests);
|
||||
STAT_LOG(d, m_invalid_piece_requests);
|
||||
STAT_LOG(d, m_choked_piece_requests);
|
||||
STAT_LOG(d, m_cancelled_piece_requests);
|
||||
STAT_LOG(d, m_piece_rejects);
|
||||
|
||||
fprintf(m_stats_logger, "\n");
|
||||
|
||||
#undef STAT_LOG
|
||||
|
Reference in New Issue
Block a user