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

Unified Diff: remoting/protocol/performance_tracker.cc

Issue 1365663003: Add UMA histograms for more detailed latency tracking on the CRD host. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixed tests Created 5 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « remoting/protocol/performance_tracker.h ('k') | remoting/protocol/protocol_mock_objects.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/protocol/performance_tracker.cc
diff --git a/remoting/protocol/performance_tracker.cc b/remoting/protocol/performance_tracker.cc
index 271336b588dc68f3594bcdeb12b82522287ed379..283e59b02bc62b94af8fe9fa1b4f09b493e1068a 100644
--- a/remoting/protocol/performance_tracker.cc
+++ b/remoting/protocol/performance_tracker.cc
@@ -20,6 +20,13 @@ const char kVideoPaintLatencyHistogram[] = "Chromoting.Video.PaintLatency";
const char kVideoFrameRateHistogram[] = "Chromoting.Video.FrameRate";
const char kVideoPacketRateHistogram[] = "Chromoting.Video.PacketRate";
const char kVideoBandwidthHistogram[] = "Chromoting.Video.Bandwidth";
+const char kCapturePendingLatencyHistogram[] =
+ "Chromoting.Video.CapturePendingLatency";
+const char kCaptureOverheadHistogram[] = "Chromoting.Video.CaptureOverhead";
+const char kEncodePendingLatencyHistogram[] =
+ "Chromoting.Video.EncodePendingLatency";
+const char kSendPendingLatencyHistogram[] =
+ "Chromoting.Video.SendPendingLatency";
// Custom count and custom time histograms are log-scaled by default. This
// results in fine-grained buckets at lower values and wider-ranged buckets
@@ -54,6 +61,16 @@ const int kBandwidthHistogramBuckets = 100;
// boundary value, so set to 101.
const int kMaxFramesPerSec = 101;
+
+void UpdateUmaEnumHistogramStub(const std::string& histogram_name,
+ int64_t value,
+ int histogram_max) {}
+
+void UpdateUmaCustomHistogramStub(const std::string& histogram_name,
+ int64_t value,
+ int histogram_min,
+ int histogram_max,
+ int histogram_buckets) {}
} // namespace
namespace remoting {
@@ -69,7 +86,11 @@ PerformanceTracker::PerformanceTracker()
video_encode_ms_(kLatencySampleSize),
video_decode_ms_(kLatencySampleSize),
video_paint_ms_(kLatencySampleSize),
- round_trip_ms_(kLatencySampleSize) {}
+ round_trip_ms_(kLatencySampleSize) {
+ uma_custom_counts_updater_ = base::Bind(&UpdateUmaCustomHistogramStub);
+ uma_custom_times_updater_ = base::Bind(&UpdateUmaCustomHistogramStub);
+ uma_enum_histogram_updater_ = base::Bind(&UpdateUmaEnumHistogramStub);
+}
PerformanceTracker::~PerformanceTracker() {}
@@ -77,6 +98,10 @@ void PerformanceTracker::SetUpdateUmaCallbacks(
UpdateUmaCustomHistogramCallback update_uma_custom_counts_callback,
UpdateUmaCustomHistogramCallback update_uma_custom_times_callback,
UpdateUmaEnumHistogramCallback update_uma_enum_histogram_callback) {
+ DCHECK(!update_uma_custom_counts_callback.is_null());
+ DCHECK(!update_uma_custom_times_callback.is_null());
+ DCHECK(!update_uma_enum_histogram_callback.is_null());
+
uma_custom_counts_updater_ = update_uma_custom_counts_callback;
uma_custom_times_updater_ = update_uma_custom_times_callback;
uma_enum_histogram_updater_ = update_uma_enum_histogram_callback;
@@ -105,11 +130,10 @@ void PerformanceTracker::RecordVideoPacketStats(const VideoPacket& packet) {
round_trip_ms_.Record(round_trip_latency.InMilliseconds());
- if (!uma_custom_times_updater_.is_null())
- uma_custom_times_updater_.Run(
- kRoundTripLatencyHistogram, round_trip_latency.InMilliseconds(),
- kLatencyHistogramMinMs, kLatencyHistogramMaxMs,
- kLatencyHistogramBuckets);
+ uma_custom_times_updater_.Run(
+ kRoundTripLatencyHistogram, round_trip_latency.InMilliseconds(),
+ kLatencyHistogramMinMs, kLatencyHistogramMaxMs,
+ kLatencyHistogramBuckets);
}
// If the packet is empty, there are no other stats to update.
@@ -121,49 +145,71 @@ void PerformanceTracker::RecordVideoPacketStats(const VideoPacket& packet) {
if (packet.has_capture_time_ms()) {
video_capture_ms_.Record(packet.capture_time_ms());
- if (!uma_custom_times_updater_.is_null())
- uma_custom_times_updater_.Run(
- kVideoCaptureLatencyHistogram, packet.capture_time_ms(),
- kVideoActionsHistogramsMinMs, kVideoActionsHistogramsMaxMs,
- kVideoActionsHistogramsBuckets);
+ uma_custom_times_updater_.Run(
+ kVideoCaptureLatencyHistogram, packet.capture_time_ms(),
+ kVideoActionsHistogramsMinMs, kVideoActionsHistogramsMaxMs,
+ kVideoActionsHistogramsBuckets);
}
if (packet.has_encode_time_ms()) {
video_encode_ms_.Record(packet.encode_time_ms());
- if (!uma_custom_times_updater_.is_null())
- uma_custom_times_updater_.Run(
- kVideoEncodeLatencyHistogram, packet.encode_time_ms(),
- kVideoActionsHistogramsMinMs, kVideoActionsHistogramsMaxMs,
- kVideoActionsHistogramsBuckets);
+ uma_custom_times_updater_.Run(
+ kVideoEncodeLatencyHistogram, packet.encode_time_ms(),
+ kVideoActionsHistogramsMinMs, kVideoActionsHistogramsMaxMs,
+ kVideoActionsHistogramsBuckets);
+ }
+
+ if (packet.has_capture_pending_time_ms()) {
+ uma_custom_times_updater_.Run(
+ kCapturePendingLatencyHistogram, packet.capture_pending_time_ms(),
+ kVideoActionsHistogramsMinMs, kVideoActionsHistogramsMaxMs,
+ kVideoActionsHistogramsBuckets);
+ }
+
+ if (packet.has_capture_overhead_time_ms()) {
+ uma_custom_times_updater_.Run(
+ kCaptureOverheadHistogram, packet.capture_overhead_time_ms(),
+ kVideoActionsHistogramsMinMs, kVideoActionsHistogramsMaxMs,
+ kVideoActionsHistogramsBuckets);
+ }
+
+ if (packet.has_encode_pending_time_ms()) {
+ uma_custom_times_updater_.Run(
+ kEncodePendingLatencyHistogram, packet.encode_pending_time_ms(),
+ kVideoActionsHistogramsMinMs, kVideoActionsHistogramsMaxMs,
+ kVideoActionsHistogramsBuckets);
+ }
+
+ if (packet.has_send_pending_time_ms()) {
+ uma_custom_times_updater_.Run(
+ kSendPendingLatencyHistogram, packet.send_pending_time_ms(),
+ kVideoActionsHistogramsMinMs, kVideoActionsHistogramsMaxMs,
+ kVideoActionsHistogramsBuckets);
}
}
void PerformanceTracker::RecordDecodeTime(double value) {
video_decode_ms_.Record(value);
- if (!uma_custom_times_updater_.is_null())
- uma_custom_times_updater_.Run(
- kVideoDecodeLatencyHistogram, value, kVideoActionsHistogramsMinMs,
- kVideoActionsHistogramsMaxMs, kVideoActionsHistogramsBuckets);
+ uma_custom_times_updater_.Run(
+ kVideoDecodeLatencyHistogram, value, kVideoActionsHistogramsMinMs,
+ kVideoActionsHistogramsMaxMs, kVideoActionsHistogramsBuckets);
}
void PerformanceTracker::RecordPaintTime(double value) {
video_paint_ms_.Record(value);
- if (!uma_custom_times_updater_.is_null())
- uma_custom_times_updater_.Run(
- kVideoPaintLatencyHistogram, value, kVideoActionsHistogramsMinMs,
- kVideoActionsHistogramsMaxMs, kVideoActionsHistogramsBuckets);
+ uma_custom_times_updater_.Run(
+ kVideoPaintLatencyHistogram, value, kVideoActionsHistogramsMinMs,
+ kVideoActionsHistogramsMaxMs, kVideoActionsHistogramsBuckets);
}
void PerformanceTracker::UploadRateStatsToUma() {
- if (!uma_enum_histogram_updater_.is_null()) {
- uma_enum_histogram_updater_.Run(kVideoFrameRateHistogram,
- video_frame_rate(), kMaxFramesPerSec);
- uma_enum_histogram_updater_.Run(kVideoPacketRateHistogram,
- video_packet_rate(), kMaxFramesPerSec);
- uma_custom_counts_updater_.Run(
- kVideoBandwidthHistogram, video_bandwidth(), kBandwidthHistogramMinBps,
- kBandwidthHistogramMaxBps, kBandwidthHistogramBuckets);
- }
+ uma_enum_histogram_updater_.Run(kVideoFrameRateHistogram, video_frame_rate(),
+ kMaxFramesPerSec);
+ uma_enum_histogram_updater_.Run(kVideoPacketRateHistogram,
+ video_packet_rate(), kMaxFramesPerSec);
+ uma_custom_counts_updater_.Run(
+ kVideoBandwidthHistogram, video_bandwidth(), kBandwidthHistogramMinBps,
+ kBandwidthHistogramMaxBps, kBandwidthHistogramBuckets);
}
void PerformanceTracker::OnPauseStateChanged(bool paused) {
« no previous file with comments | « remoting/protocol/performance_tracker.h ('k') | remoting/protocol/protocol_mock_objects.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698