From 51c38c2e16508a8d51b164ace04f6ca92b61ef37 Mon Sep 17 00:00:00 2001 From: Arvid Norberg Date: Mon, 17 Aug 2009 20:29:09 +0000 Subject: [PATCH] added performance warning when hitting the send buffer watermark limit --- docs/manual.rst | 3 ++- include/libtorrent/alert_types.hpp | 6 ++++-- include/libtorrent/session_settings.hpp | 2 +- src/peer_connection.cpp | 7 +++++++ 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/docs/manual.rst b/docs/manual.rst index b1040ea61..a67166230 100644 --- a/docs/manual.rst +++ b/docs/manual.rst @@ -5292,7 +5292,8 @@ upload or download rate performance. outstanding_disk_buffer_limit_reached, outstanding_request_limit_reached, upload_limit_too_low, - download_limit_too_low + download_limit_too_low, + send_buffer_watermark_too_low }; performance_warning_t warning_code; diff --git a/include/libtorrent/alert_types.hpp b/include/libtorrent/alert_types.hpp index c1e947757..ca69492d7 100644 --- a/include/libtorrent/alert_types.hpp +++ b/include/libtorrent/alert_types.hpp @@ -212,7 +212,8 @@ namespace libtorrent outstanding_disk_buffer_limit_reached, outstanding_request_limit_reached, upload_limit_too_low, - download_limit_too_low + download_limit_too_low, + send_buffer_watermark_too_low }; performance_alert(torrent_handle const& h @@ -232,7 +233,8 @@ namespace libtorrent "max outstanding disk writes reached", "max outstanding piece requests reached", "upload limit too low (download rate will suffer)", - "download limit too low (upload rate will suffer)" + "download limit too low (upload rate will suffer)", + "send buffer watermark too low (upload rate will suffer)" }; return torrent_alert::message() + ": performance warning: " diff --git a/include/libtorrent/session_settings.hpp b/include/libtorrent/session_settings.hpp index 3bc5fa360..4d923d263 100644 --- a/include/libtorrent/session_settings.hpp +++ b/include/libtorrent/session_settings.hpp @@ -119,7 +119,7 @@ namespace libtorrent #endif , free_torrent_hashes(true) , upnp_ignore_nonrouters(false) - , send_buffer_watermark(80 * 1024) + , send_buffer_watermark(100 * 1024) , auto_upload_slots(true) , auto_upload_slots_rate_based(true) , use_parole_mode(true) diff --git a/src/peer_connection.cpp b/src/peer_connection.cpp index 9dab8b2d6..625e84853 100644 --- a/src/peer_connection.cpp +++ b/src/peer_connection.cpp @@ -3658,7 +3658,14 @@ namespace libtorrent int buffer_size_watermark = int(m_statistics.upload_rate()) / 2; if (buffer_size_watermark < 512) buffer_size_watermark = 512; else if (buffer_size_watermark > m_ses.settings().send_buffer_watermark) + { buffer_size_watermark = m_ses.settings().send_buffer_watermark; + if (t->alerts().should_post()) + { + t->alerts().post_alert(performance_alert(t->get_handle() + , performance_alert::send_buffer_watermark_too_low)); + } + } while (!m_requests.empty() && (send_buffer_size() + m_reading_bytes < buffer_size_watermark))