cryptohome: Export evicted Drive cache sizes as UMA.
BUG=chromium:533750
TEST=existing unit tests
Change-Id: I9f722d361b790603c4baa7daceae0fbbeef1688b
Reviewed-on: https://chromium-review.googlesource.com/356331
Commit-Ready: Keigo Oka <oka@chromium.org>
Tested-by: Keigo Oka <oka@chromium.org>
Reviewed-by: Keigo Oka <oka@chromium.org>
Reviewed-by: Darren Krahn <dkrahn@chromium.org>
diff --git a/cryptohome/cryptohome_metrics.cc b/cryptohome/cryptohome_metrics.cc
index fb9c229..465ea53 100644
--- a/cryptohome/cryptohome_metrics.cc
+++ b/cryptohome/cryptohome_metrics.cc
@@ -27,6 +27,8 @@
constexpr int kDictionaryAttackCounterNumBuckets = 100;
constexpr char kChecksumStatusHistogram[] = "Cryptohome.ChecksumStatus";
constexpr char kCryptohomeTpmResultsHistogram[] = "Cryptohome.TpmResults";
+constexpr char kCryptohomeFreedGCacheDiskSpaceInMbHistogram[] =
+ "Cryptohome.FreedGCacheDiskSpaceInMb";
// Histogram parameters. This should match the order of 'TimerType'.
// Min and max samples are in milliseconds.
@@ -159,4 +161,14 @@
kChecksumStatusNumBuckets);
}
+void ReportFreedGCacheDiskSpaceInMb(int mb) {
+ if (!g_metrics) {
+ return;
+ }
+ g_metrics->SendToUMA(kCryptohomeFreedGCacheDiskSpaceInMbHistogram, mb,
+ 0 /* minimum value of the histogram samples */,
+ 1000 /* maximum value of the histogram samples (1GB) */,
+ 50 /* number of buckets */);
+}
+
} // namespace cryptohome
diff --git a/cryptohome/cryptohome_metrics.h b/cryptohome/cryptohome_metrics.h
index 17f4236..fdcc5be 100644
--- a/cryptohome/cryptohome_metrics.h
+++ b/cryptohome/cryptohome_metrics.h
@@ -100,6 +100,10 @@
void ReportChecksum(ChecksumStatus status);
+// Reports removed GCache size by cryptohome to the
+// "Cryptohome.FreedGCacheDiskSpaceInMb" histogram.
+void ReportFreedGCacheDiskSpaceInMb(int mb);
+
// Initialization helper.
class ScopedMetricsInitializer {
public:
diff --git a/cryptohome/homedirs.cc b/cryptohome/homedirs.cc
index 771339c..f8c1364 100644
--- a/cryptohome/homedirs.cc
+++ b/cryptohome/homedirs.cc
@@ -17,6 +17,7 @@
#include <chromeos/constants/cryptohome.h>
#include "cryptohome/credentials.h"
+#include "cryptohome/cryptohome_metrics.h"
#include "cryptohome/cryptolib.h"
#include "cryptohome/mount.h"
#include "cryptohome/platform.h"
@@ -81,14 +82,20 @@
DoForEveryUnmountedCryptohome(base::Bind(&HomeDirs::DeleteCacheCallback,
base::Unretained(this)));
- if (platform_->AmountOfFreeDiskSpace(shadow_root_) >= kEnoughFreeSpace)
+ int64_t freeDiskSpace = platform_->AmountOfFreeDiskSpace(shadow_root_);
+ if (freeDiskSpace >= kEnoughFreeSpace)
return true;
// Clean Cache directories for every user (except current one).
DoForEveryUnmountedCryptohome(base::Bind(&HomeDirs::DeleteGCacheTmpCallback,
base::Unretained(this)));
- if (platform_->AmountOfFreeDiskSpace(shadow_root_) >= kEnoughFreeSpace)
+ int64_t oldFreeDiskSpace = freeDiskSpace;
+ freeDiskSpace = platform_->AmountOfFreeDiskSpace(shadow_root_);
+ ReportFreedGCacheDiskSpaceInMb((freeDiskSpace - oldFreeDiskSpace) / 1024 /
+ 1024);
+
+ if (freeDiskSpace >= kEnoughFreeSpace)
return true;
// Initialize user timestamp cache if it has not been yet. This reads the