summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/renderer_histogram_snapshots.cc
diff options
context:
space:
mode:
authorjar@chromium.org <jar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-28 22:02:46 +0000
committerjar@chromium.org <jar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-28 22:02:46 +0000
commitc9a3ef84a7d486d4dd24fe8332b8b83ed833885d (patch)
treee1180399782984b4f1ffd909be6149c5ce1cc736 /chrome/renderer/renderer_histogram_snapshots.cc
parentc2a44c4852ad9f800968dcc32e3344c948c2bc88 (diff)
downloadchromium_src-c9a3ef84a7d486d4dd24fe8332b8b83ed833885d.zip
chromium_src-c9a3ef84a7d486d4dd24fe8332b8b83ed833885d.tar.gz
chromium_src-c9a3ef84a7d486d4dd24fe8332b8b83ed833885d.tar.bz2
Automatically adapt to faster/slower uploads of renderer histograms
This replaces the current time based approach (chrome is given N seconds to upload all renederer histograms) with an asynch callback approach that waits until all renderers have responded (with their updates). It uses a fall-back timer to ensure that a hung renderer won't delay things forever as well. This causes faster (and complete) updates in about:histograms as well as generally assuring complete updates during UMA gatherings. This code was contributed by Raman Tenneti in CL 42496 http://codereview.chromium.org/42496 bug=12850 r=raman Review URL: http://codereview.chromium.org/113473 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@17123 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/renderer_histogram_snapshots.cc')
-rw-r--r--chrome/renderer/renderer_histogram_snapshots.cc16
1 files changed, 8 insertions, 8 deletions
diff --git a/chrome/renderer/renderer_histogram_snapshots.cc b/chrome/renderer/renderer_histogram_snapshots.cc
index 6d0507d..025eb73 100644
--- a/chrome/renderer/renderer_histogram_snapshots.cc
+++ b/chrome/renderer/renderer_histogram_snapshots.cc
@@ -22,13 +22,13 @@ RendererHistogramSnapshots::RendererHistogramSnapshots()
}
// Send data quickly!
-void RendererHistogramSnapshots::SendHistograms() {
+void RendererHistogramSnapshots::SendHistograms(int sequence_number) {
RenderThread::current()->message_loop()->PostTask(FROM_HERE,
renderer_histogram_snapshots_factory_.NewRunnableMethod(
- &RendererHistogramSnapshots::UploadAllHistrograms));
+ &RendererHistogramSnapshots::UploadAllHistrograms, sequence_number));
}
-void RendererHistogramSnapshots::UploadAllHistrograms() {
+void RendererHistogramSnapshots::UploadAllHistrograms(int sequence_number) {
StatisticsRecorder::Histograms histograms;
StatisticsRecorder::GetHistograms(&histograms);
@@ -39,11 +39,11 @@ void RendererHistogramSnapshots::UploadAllHistrograms() {
it++) {
UploadHistrogram(**it, &pickled_histograms);
}
- // Send the handle over synchronous IPC.
- if (pickled_histograms.size() > 0) {
- RenderThread::current()->Send(
- new ViewHostMsg_RendererHistograms(pickled_histograms));
- }
+ // Send the sequence number and list of pickled histograms over synchronous
+ // IPC.
+ RenderThread::current()->Send(
+ new ViewHostMsg_RendererHistograms(
+ sequence_number, pickled_histograms));
}
// Extract snapshot data and then send it off the the Browser process