Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(39)

Side by Side Diff: net/quic/core/congestion_control/rtt_stats.h

Issue 2404113002: Remove unused windowed RTT logic from RttStats (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | net/quic/core/congestion_control/rtt_stats.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 // 4 //
5 // A convenience class to store rtt samples and calculate smoothed rtt. 5 // A convenience class to store rtt samples and calculate smoothed rtt.
6 6
7 #ifndef NET_QUIC_CONGESTION_CONTROL_RTT_STATS_H_ 7 #ifndef NET_QUIC_CONGESTION_CONTROL_RTT_STATS_H_
8 #define NET_QUIC_CONGESTION_CONTROL_RTT_STATS_H_ 8 #define NET_QUIC_CONGESTION_CONTROL_RTT_STATS_H_
9 9
10 #include <stdint.h> 10 #include <stdint.h>
11 11
12 #include <algorithm> 12 #include <algorithm>
13 13
14 #include "base/macros.h" 14 #include "base/macros.h"
15 #include "net/base/net_export.h" 15 #include "net/base/net_export.h"
16 #include "net/quic/core/congestion_control/windowed_filter.h"
17 #include "net/quic/core/quic_bug_tracker.h" 16 #include "net/quic/core/quic_bug_tracker.h"
18 #include "net/quic/core/quic_protocol.h" 17 #include "net/quic/core/quic_protocol.h"
19 #include "net/quic/core/quic_time.h" 18 #include "net/quic/core/quic_time.h"
20 19
21 namespace net { 20 namespace net {
22 21
23 namespace test { 22 namespace test {
24 class RttStatsPeer; 23 class RttStatsPeer;
25 } // namespace test 24 } // namespace test
26 25
27 class NET_EXPORT_PRIVATE RttStats { 26 class NET_EXPORT_PRIVATE RttStats {
28 public: 27 public:
29 RttStats(); 28 RttStats();
30 29
31 // Updates the RTT from an incoming ack which is received |send_delta| after 30 // Updates the RTT from an incoming ack which is received |send_delta| after
32 // the packet is sent and the peer reports the ack being delayed |ack_delay|. 31 // the packet is sent and the peer reports the ack being delayed |ack_delay|.
33 void UpdateRtt(QuicTime::Delta send_delta, 32 void UpdateRtt(QuicTime::Delta send_delta,
34 QuicTime::Delta ack_delay, 33 QuicTime::Delta ack_delay,
35 QuicTime now); 34 QuicTime now);
36 35
37 // Causes the smoothed_rtt to be increased to the latest_rtt if the latest_rtt 36 // Causes the smoothed_rtt to be increased to the latest_rtt if the latest_rtt
38 // is larger. The mean deviation is increased to the most recent deviation if 37 // is larger. The mean deviation is increased to the most recent deviation if
39 // it's larger. 38 // it's larger.
40 void ExpireSmoothedMetrics(); 39 void ExpireSmoothedMetrics();
41 40
42 // Forces RttStats to sample a new windowed min rtt within the next
43 // |num_samples| UpdateRtt calls.
44 void SampleNewWindowedMinRtt(uint32_t num_samples);
45
46 // Called when connection migrates and rtt measurement needs to be reset. 41 // Called when connection migrates and rtt measurement needs to be reset.
47 void OnConnectionMigration(); 42 void OnConnectionMigration();
48 43
49 // Returns the EWMA smoothed RTT for the connection. 44 // Returns the EWMA smoothed RTT for the connection.
50 // May return Zero if no valid updates have occurred. 45 // May return Zero if no valid updates have occurred.
51 QuicTime::Delta smoothed_rtt() const { return smoothed_rtt_; } 46 QuicTime::Delta smoothed_rtt() const { return smoothed_rtt_; }
52 47
53 // Returns the EWMA smoothed RTT prior to the most recent RTT sample. 48 // Returns the EWMA smoothed RTT prior to the most recent RTT sample.
54 QuicTime::Delta previous_srtt() const { return previous_srtt_; } 49 QuicTime::Delta previous_srtt() const { return previous_srtt_; }
55 50
(...skipping 11 matching lines...) Expand all
67 // The most recent rtt measurement. 62 // The most recent rtt measurement.
68 // May return Zero if no valid updates have occurred. 63 // May return Zero if no valid updates have occurred.
69 QuicTime::Delta latest_rtt() const { return latest_rtt_; } 64 QuicTime::Delta latest_rtt() const { return latest_rtt_; }
70 65
71 // Returns the min_rtt for the entire connection. 66 // Returns the min_rtt for the entire connection.
72 // May return Zero if no valid updates have occurred. 67 // May return Zero if no valid updates have occurred.
73 QuicTime::Delta min_rtt() const { return min_rtt_; } 68 QuicTime::Delta min_rtt() const { return min_rtt_; }
74 69
75 QuicTime::Delta mean_deviation() const { return mean_deviation_; } 70 QuicTime::Delta mean_deviation() const { return mean_deviation_; }
76 71
77 QuicTime::Delta WindowedMinRtt() { return windowed_min_rtt_.GetBest(); }
78
79 private: 72 private:
80 friend class test::RttStatsPeer; 73 friend class test::RttStatsPeer;
81 74
82 // Updates the windowed min rtt. Also forces a new windowed_min_rtt sample,
83 // if set by a call to SampleNewWindowedMinRtt() above.
84 void UpdateWindowedMinRtt(QuicTime::Delta rtt_sample, QuicTime now);
85
86 QuicTime::Delta latest_rtt_; 75 QuicTime::Delta latest_rtt_;
87 QuicTime::Delta min_rtt_; 76 QuicTime::Delta min_rtt_;
88 QuicTime::Delta smoothed_rtt_; 77 QuicTime::Delta smoothed_rtt_;
89 QuicTime::Delta previous_srtt_; 78 QuicTime::Delta previous_srtt_;
90 // Mean RTT deviation during this session. 79 // Mean RTT deviation during this session.
91 // Approximation of standard deviation, the error is roughly 1.25 times 80 // Approximation of standard deviation, the error is roughly 1.25 times
92 // larger than the standard deviation, for a normally distributed signal. 81 // larger than the standard deviation, for a normally distributed signal.
93 QuicTime::Delta mean_deviation_; 82 QuicTime::Delta mean_deviation_;
94 int64_t initial_rtt_us_; 83 int64_t initial_rtt_us_;
95 84
96 // Variables used to force a new windowed_min_rtt measurement within
97 // num_samples_for_forced_min_.
98 QuicTime::Delta forced_windowed_min_rtt_;
99 QuicTime forced_windowed_min_rtt_time_;
100 uint32_t num_samples_for_forced_min_;
101
102 // Windowed min_rtt.
103 WindowedFilter<QuicTime::Delta,
104 MinFilter<QuicTime::Delta>,
105 QuicTime,
106 QuicTime::Delta>
107 windowed_min_rtt_;
108
109 DISALLOW_COPY_AND_ASSIGN(RttStats); 85 DISALLOW_COPY_AND_ASSIGN(RttStats);
110 }; 86 };
111 87
112 } // namespace net 88 } // namespace net
113 89
114 #endif // NET_QUIC_CONGESTION_CONTROL_RTT_STATS_H_ 90 #endif // NET_QUIC_CONGESTION_CONTROL_RTT_STATS_H_
OLDNEW
« no previous file with comments | « no previous file | net/quic/core/congestion_control/rtt_stats.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698