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

Unified Diff: base/debug/trace_event_impl.cc

Issue 22796009: Shrink trace_event buffers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Shrink non-ring-buffer also Created 7 years, 4 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 | « base/debug/trace_event_impl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/debug/trace_event_impl.cc
diff --git a/base/debug/trace_event_impl.cc b/base/debug/trace_event_impl.cc
index cc22424f15e505c96dac6cdc356b404be6e87406..b85aeca3b8f1663eff414f8760a04aa2a1c7771f 100644
--- a/base/debug/trace_event_impl.cc
+++ b/base/debug/trace_event_impl.cc
@@ -50,7 +50,8 @@ namespace debug {
// Controls the number of trace events we will buffer in-memory
// before throwing them away.
-const size_t kTraceEventBufferSize = 500000;
+const size_t kTraceEventVectorBufferSize = 250000;
+const size_t kTraceEventRingBufferSize = kTraceEventVectorBufferSize / 4;
const size_t kTraceEventBatchSize = 1000;
const size_t kTraceEventInitialBufferSize = 1024;
@@ -88,13 +89,6 @@ const char kRecordUntilFull[] = "record-until-full";
const char kRecordContinuously[] = "record-continuously";
const char kEnableSampling[] = "enable-sampling";
-size_t NextIndex(size_t index) {
- index++;
- if (index >= kTraceEventBufferSize)
- index = 0;
- return index;
-}
-
} // namespace
class TraceBufferRingBuffer : public TraceBuffer {
@@ -160,7 +154,18 @@ class TraceBufferRingBuffer : public TraceBuffer {
return logged_events_.size();
}
+ virtual size_t Capacity() const OVERRIDE {
+ return kTraceEventRingBufferSize;
+ }
+
private:
+ static size_t NextIndex(size_t index) {
+ index++;
+ if (index >= kTraceEventRingBufferSize)
+ index = 0;
+ return index;
+ }
+
size_t unused_event_index_;
size_t oldest_event_index_;
std::vector<TraceEvent> logged_events_;
@@ -196,7 +201,7 @@ class TraceBufferVector : public TraceBuffer {
}
virtual bool IsFull() const OVERRIDE {
- return Size() >= kTraceEventBufferSize;
+ return Size() >= kTraceEventVectorBufferSize;
}
virtual size_t CountEnabledByName(
@@ -222,6 +227,10 @@ class TraceBufferVector : public TraceBuffer {
return logged_events_.size();
}
+ virtual size_t Capacity() const OVERRIDE {
+ return kTraceEventVectorBufferSize;
+ }
+
private:
size_t current_iteration_index_;
std::vector<TraceEvent> logged_events_;
@@ -251,6 +260,9 @@ class TraceBufferDiscardsEvents : public TraceBuffer {
virtual size_t Size() const OVERRIDE { return 0; }
+ // As this buffer is never full, we can return any positive number.
+ virtual size_t Capacity() const OVERRIDE { return 1; }
+
virtual const TraceEvent& GetEventAt(size_t index) const OVERRIDE {
NOTREACHED();
return *static_cast<TraceEvent*>(NULL);
@@ -1088,7 +1100,8 @@ bool TraceLog::HasEnabledStateObserver(EnabledStateObserver* listener) const {
}
float TraceLog::GetBufferPercentFull() const {
- return (float)((double)logged_events_->Size()/(double)kTraceEventBufferSize);
+ return static_cast<float>(static_cast<double>(logged_events_->Size()) /
+ logged_events_->Capacity());
}
void TraceLog::SetNotificationCallback(
« no previous file with comments | « base/debug/trace_event_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698