Variations: Reshuffle low-entropy experiments
The distribution of low entropy source values in the wild is skewed.
Create a new low entropy source, and use it for experiments requiring
low entropy. We don't want to reshuffle the high entropy experiments,
since this would also reshuffle the UMA sample population. So retain the
old low entropy source on clients which already have it, and continue
incorporating it into the default entropy source. On new installs, only
use the new low entropy source.
Continue recording the old source as UMA.LowEntropySourceValue, and add
UMA.LowEntropySource3Value for the new source.
We reshuffled once before, in commit 1f74e80d72. In that case, both the
client ID and the low entropy source were regenerated, and the old
values were later removed. In contrast, this change doesn't touch the
client ID, and retains the old low entropy source.
Simultaneously replace PermutedEntropyProvider with
NormalizedMurmurHashEntropyProvider. Changing providers also reshuffles
users, so land these together to minimize the number of reshuffles.
BUG=881517
Change-Id: I22aba65dcf34d76af564eba358e4caacdbbf1326
Reviewed-on: https://chromium-review.googlesource.com/c/1364344
Commit-Queue: Paul Miller <[email protected]>
Reviewed-by: Alexei Svitkine <[email protected]>
Reviewed-by: Changwan Ryu <[email protected]>
Reviewed-by: Ilya Sherman <[email protected]>
Cr-Commit-Position: refs/heads/master@{#617750}
diff --git a/components/metrics/metrics_pref_names.cc b/components/metrics/metrics_pref_names.cc
index ae74ae2..5ab8d56 100644
--- a/components/metrics/metrics_pref_names.cc
+++ b/components/metrics/metrics_pref_names.cc
@@ -28,10 +28,16 @@
// count info, etc.
const char kMetricsInitialLogs[] = "user_experience_metrics.initial_logs2";
-// The metrics entropy source.
-// Note: The name low_entropy_source2 is a result of creating
-// new prefs to do a one-time reset of the previous values.
+// Low entropy source values. The new source (with suffix "3") was created
+// because the old source (with suffix "2") is biased in the wild. Clients which
+// have an old source still incorporate it into the high entropy source, to
+// avoid reshuffling experiments using high entropy, but use the new source for
+// experiments requiring low entropy. Newer clients only have the new source,
+// and use it both for low entropy experiments to to incorporate into the high
+// entropy source for high entropy experiments.
const char kMetricsLowEntropySource[] =
+ "user_experience_metrics.low_entropy_source3";
+const char kMetricsOldLowEntropySource[] =
"user_experience_metrics.low_entropy_source2";
// A machine ID used to detect when underlying hardware changes. It is only