diff options
author | jar@chromium.org <jar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-28 22:02:46 +0000 |
---|---|---|
committer | jar@chromium.org <jar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-28 22:02:46 +0000 |
commit | c9a3ef84a7d486d4dd24fe8332b8b83ed833885d (patch) | |
tree | e1180399782984b4f1ffd909be6149c5ce1cc736 /chrome/renderer/renderer_histogram_snapshots.cc | |
parent | c2a44c4852ad9f800968dcc32e3344c948c2bc88 (diff) | |
download | chromium_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.cc | 16 |
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 |