Index: base/metrics/field_trial.cc |
diff --git a/base/metrics/field_trial.cc b/base/metrics/field_trial.cc |
index 63f549e5729d69b3587de96dbef7ad61764bac26..65611e3fc5fd220a1ba1dcda7ebaeeb04c776b8b 100644 |
--- a/base/metrics/field_trial.cc |
+++ b/base/metrics/field_trial.cc |
@@ -43,8 +43,12 @@ const bool kUseSharedMemoryForFieldTrials = false; |
// Constants for the field trial allocator. |
const char kAllocatorName[] = "FieldTrialAllocator"; |
const uint32_t kFieldTrialType = 0xABA17E13 + 1; // SHA1(FieldTrialEntry) v1 |
bcwhite
2016/11/08 20:30:02
Blank line after.
lawrencewu
2016/11/09 18:06:46
Done.
|
+// We allocate 64 KiB to hold all the field trial data. This should be enough, |
bcwhite
2016/11/08 20:30:02
Include the date when this was true. Also, commen
lawrencewu
2016/11/09 18:06:46
Done.
|
+// as currently we use ~8KiB for the field trials, and ~10KiB for experiment |
+// parameters. This also doesn't allocate all 64 KiB at once -- the pages only |
+// get mapped to physical memory when they are touched. |
#if !defined(OS_NACL) |
-const size_t kFieldTrialAllocationSize = 4 << 10; // 4 KiB = one page |
+const size_t kFieldTrialAllocationSize = 4 << 14; |
bcwhite
2016/11/08 20:14:32
Please do this as
64 << 10 // 64 KiB
lawrencewu
2016/11/09 18:06:46
Done.
|
#endif |
// We create one FieldTrialEntry per field trial in shared memory, via |
@@ -179,6 +183,15 @@ HANDLE CreateReadOnlyHandle(SharedPersistentMemoryAllocator* allocator) { |
return nullptr; |
return dst; |
} |
+ |
+void ReportFieldTrialAllocatorUsage( |
bcwhite
2016/11/08 20:14:32
Don't need this.
lawrencewu
2016/11/09 18:06:46
Removed.
|
+ SharedPersistentMemoryAllocator* allocator) { |
+ size_t used = allocator->used(); |
+ UMA_HISTOGRAM_COUNTS_100000("UMA.FieldTrialAllocator.Used", used); |
+ int used_percent = used / kFieldTrialAllocationSize; |
+ UMA_HISTOGRAM_PERCENTAGE("UMA.FieldTrialAllocator.UsedPct", |
+ used_percent * 100); |
+} |
#endif |
} // namespace |
@@ -728,8 +741,7 @@ void FieldTrialList::CopyFieldTrialStateToFlags( |
std::to_string(field_trial_length); |
cmd_line->AppendSwitchASCII(field_trial_handle_switch, field_trial_handle); |
- UMA_HISTOGRAM_COUNTS_10000("UMA.FieldTrialAllocator.Size", |
- field_trial_length); |
+ ReportFieldTrialAllocatorUsage(global_->field_trial_allocator_.get()); |
bcwhite
2016/11/08 20:14:32
When you create the allocator, call
allocator->Cr
lawrencewu
2016/11/09 18:06:46
Done. But this will get called on every subprocess
bcwhite
2016/11/09 18:57:37
Not ideal but acceptable. If you can call it once
lawrencewu
2016/11/09 19:15:00
Acknowledged.
|
return; |
} |
#endif |