Automated rollback of commit 1acc7a843bf0996c26a1e3d74bb64514395b7e7f.

PiperOrigin-RevId: 526586062
Change-Id: I95d36a97b46d1e6ca7d98efc7643a317f3f0ac59
diff --git a/scripts/bootstrap/compile.sh b/scripts/bootstrap/compile.sh
index 56dcf87..82bb2f9 100755
--- a/scripts/bootstrap/compile.sh
+++ b/scripts/bootstrap/compile.sh
@@ -25,7 +25,7 @@
 
 # Parse third_party/googleapis/BUILD.bazel to find the proto files we need to compile from googleapis
 GOOGLE_API_PROTOS="$(grep -o '".*\.proto"' third_party/googleapis/BUILD.bazel | sed 's/"//g' | sed 's|^|third_party/googleapis/|g')"
-PROTO_FILES=$(find third_party/remoteapis ${GOOGLE_API_PROTOS} third_party/pprof src/main/protobuf src/main/java/com/google/devtools/build/lib/buildeventstream/proto src/main/java/com/google/devtools/build/skyframe src/main/java/com/google/devtools/build/lib/skyframe/proto src/main/java/com/google/devtools/build/lib/bazel/debug src/main/java/com/google/devtools/build/lib/starlarkdebug/proto src/main/java/com/google/devtools/build/lib/packages/metrics/package_load_metrics.proto -name "*.proto")
+PROTO_FILES=$(find third_party/remoteapis ${GOOGLE_API_PROTOS} third_party/pprof src/main/protobuf src/main/java/com/google/devtools/build/lib/buildeventstream/proto src/main/java/com/google/devtools/build/skyframe src/main/java/com/google/devtools/build/lib/skyframe/proto src/main/java/com/google/devtools/build/lib/bazel/debug src/main/java/com/google/devtools/build/lib/starlarkdebug/proto src/main/java/com/google/devtools/build/lib/packages/metrics/package_metrics.proto -name "*.proto")
 # For protobuf jars, derived/jars/com_google_protobuf/java/core/libcore.jar must be in front of derived/jars/com_google_protobuf/java/core/liblite.jar, so we sort jars here
 LIBRARY_JARS=$(find $ADDITIONAL_JARS -name '*.jar' | sort | grep -Fv JavaBuilder | tr "\n" " ")
 MAVEN_JARS=$(find maven -name '*.jar' | grep -Fv netty-tcnative | tr "\n" " ")
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/BUILD b/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/BUILD
index d30768b..313dccb 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/BUILD
@@ -26,7 +26,6 @@
     name = "build_event_stream_proto",
     srcs = ["build_event_stream.proto"],
     deps = [
-        "//src/main/java/com/google/devtools/build/lib/packages/metrics:package_load_metrics_proto",
         "//src/main/protobuf:command_line_proto",
         "//src/main/protobuf:failure_details_proto",
         "//src/main/protobuf:invocation_policy_proto",
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/build_event_stream.proto b/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/build_event_stream.proto
index 8613d33..18fd701 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/build_event_stream.proto
+++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/build_event_stream.proto
@@ -18,7 +18,6 @@
 
 import "google/protobuf/duration.proto";
 import "google/protobuf/timestamp.proto";
-import "src/main/java/com/google/devtools/build/lib/packages/metrics/package_load_metrics.proto";
 import "src/main/protobuf/command_line.proto";
 import "src/main/protobuf/failure_details.proto";
 import "src/main/protobuf/invocation_policy.proto";
@@ -940,10 +939,6 @@
     // After Feb 2022, this value is the number of packages successfully
     // loaded.
     int64 packages_loaded = 1;
-
-    // Loading time metrics per package.
-    repeated devtools.build.lib.packages.metrics.PackageLoadMetrics
-        package_load_metrics = 2;
   }
   PackageMetrics package_metrics = 4;
 
diff --git a/src/main/java/com/google/devtools/build/lib/metrics/BUILD b/src/main/java/com/google/devtools/build/lib/metrics/BUILD
index eaf5f48..fba1ce6 100644
--- a/src/main/java/com/google/devtools/build/lib/metrics/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/metrics/BUILD
@@ -44,8 +44,6 @@
         "//src/main/java/com/google/devtools/build/lib/bugreport",
         "//src/main/java/com/google/devtools/build/lib/buildeventstream/proto:build_event_stream_java_proto",
         "//src/main/java/com/google/devtools/build/lib/clock",
-        "//src/main/java/com/google/devtools/build/lib/packages/metrics",
-        "//src/main/java/com/google/devtools/build/lib/packages/metrics:package_load_metrics_java_proto",
         "//src/main/java/com/google/devtools/build/lib/profiler",
         "//src/main/java/com/google/devtools/build/lib/profiler:network_metrics_collector",
         "//src/main/java/com/google/devtools/build/lib/skyframe:execution_finished_event",
diff --git a/src/main/java/com/google/devtools/build/lib/metrics/MetricsCollector.java b/src/main/java/com/google/devtools/build/lib/metrics/MetricsCollector.java
index e8d32e7..21a4b72 100644
--- a/src/main/java/com/google/devtools/build/lib/metrics/MetricsCollector.java
+++ b/src/main/java/com/google/devtools/build/lib/metrics/MetricsCollector.java
@@ -44,9 +44,6 @@
 import com.google.devtools.build.lib.clock.BlazeClock.NanosToMillisSinceEpochConverter;
 import com.google.devtools.build.lib.metrics.MetricsModule.Options;
 import com.google.devtools.build.lib.metrics.PostGCMemoryUseRecorder.PeakHeap;
-import com.google.devtools.build.lib.packages.metrics.PackageLoadMetrics;
-import com.google.devtools.build.lib.packages.metrics.PackageMetricsPackageLoadingListener;
-import com.google.devtools.build.lib.packages.metrics.PackageMetricsRecorder;
 import com.google.devtools.build.lib.profiler.MemoryProfiler;
 import com.google.devtools.build.lib.profiler.NetworkMetricsCollector;
 import com.google.devtools.build.lib.profiler.Profiler;
@@ -113,10 +110,6 @@
     numAnalyses.getAndIncrement();
   }
 
-  // For each of the 4 metrics allow only 10 entries to be printed when handling
-  // extremes.
-  private static final int MAX_EXTREME_PACKAGE_STATS = 4 * 10;
-
   @SuppressWarnings("unused")
   @Subscribe
   public void onAnalysisPhaseComplete(AnalysisPhaseCompleteEvent event) {
@@ -128,22 +121,8 @@
     targetMetrics
         .setTargetsConfigured(targetsConfigured.total())
         .setTargetsConfiguredNotIncludingAspects(targetsConfigured.configuredTargetsOnly());
-    timingMetrics.setAnalysisPhaseTimeInMs(event.getTimeInMs());
-
     packageMetrics.setPackagesLoaded(event.getPkgManagerStats().getPackagesSuccessfullyLoaded());
-
-    if (PackageMetricsPackageLoadingListener.getInstance().getPublishPackageMetricsInBep()) {
-      PackageMetricsRecorder recorder =
-          PackageMetricsPackageLoadingListener.getInstance().getPackageMetricsRecorder();
-      if (recorder != null) {
-        Stream<PackageLoadMetrics> metrics =
-            recorder.getRecorderType() == PackageMetricsRecorder.Type.ONLY_EXTREMES
-                ? recorder.getPackageLoadMetrics().stream().limit(MAX_EXTREME_PACKAGE_STATS)
-                : recorder.getPackageLoadMetrics().stream();
-
-        metrics.forEach(packageMetrics::addPackageLoadMetrics);
-      }
-    }
+    timingMetrics.setAnalysisPhaseTimeInMs(event.getTimeInMs());
   }
 
   @SuppressWarnings("unused")
diff --git a/src/main/java/com/google/devtools/build/lib/packages/metrics/BUILD b/src/main/java/com/google/devtools/build/lib/packages/metrics/BUILD
index 4c481ab..4bbc6f1 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/metrics/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/packages/metrics/BUILD
@@ -16,7 +16,7 @@
     name = "metrics",
     srcs = glob(["*.java"]),
     deps = [
-        ":package_load_metrics_java_proto",
+        ":package_metrics_java_proto",
         "//src/main/java/com/google/devtools/build/lib:runtime",
         "//src/main/java/com/google/devtools/build/lib/analysis:analysis_cluster",
         "//src/main/java/com/google/devtools/build/lib/cmdline",
@@ -35,26 +35,26 @@
 )
 
 proto_library(
-    name = "package_load_metrics_proto",
-    srcs = ["package_load_metrics.proto"],
+    name = "package_metrics_proto",
+    srcs = ["package_metrics.proto"],
     deps = [
         "@com_google_protobuf//:duration_proto",
     ],
 )
 
 java_proto_library(
-    name = "package_load_metrics_java_proto",
+    name = "package_metrics_java_proto",
     deps = [
-        ":package_load_metrics_proto",
+        ":package_metrics_proto",
     ],
 )
 
 java_library_srcs(
-    name = "package_load_metrics_java_proto_srcs",
-    deps = [":package_load_metrics_java_proto"],
+    name = "package_metrics_java_proto_srcs",
+    deps = [":package_metrics_java_proto"],
 )
 
 filegroup(
     name = "dist_jars",
-    srcs = [":package_load_metrics_java_proto_srcs"],
+    srcs = [":package_metrics_java_proto_srcs"],
 )
diff --git a/src/main/java/com/google/devtools/build/lib/packages/metrics/CompletePackageMetricsRecorder.java b/src/main/java/com/google/devtools/build/lib/packages/metrics/CompletePackageMetricsRecorder.java
index 2b29d4e..9a2222d 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/metrics/CompletePackageMetricsRecorder.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/metrics/CompletePackageMetricsRecorder.java
@@ -27,40 +27,40 @@
 final class CompletePackageMetricsRecorder implements PackageMetricsRecorder {
 
   @GuardedBy("this")
-  private final HashMap<PackageIdentifier, PackageLoadMetrics> metrics = new HashMap<>();
+  private final HashMap<PackageIdentifier, PackageMetrics> metrics = new HashMap<>();
 
   CompletePackageMetricsRecorder() {}
 
   @Override
-  public synchronized void recordMetrics(PackageIdentifier pkgId, PackageLoadMetrics metrics) {
+  public synchronized void recordMetrics(PackageIdentifier pkgId, PackageMetrics metrics) {
     this.metrics.put(pkgId, metrics);
   }
 
   @Override
   public synchronized Map<PackageIdentifier, Duration> getLoadTimes() {
-    return Maps.transformValues(metrics, PackageLoadMetrics::getLoadDuration);
+    return Maps.transformValues(metrics, PackageMetrics::getLoadDuration);
   }
 
   @Override
   public synchronized Map<PackageIdentifier, Long> getComputationSteps() {
-    return Maps.transformValues(metrics, PackageLoadMetrics::getComputationSteps);
+    return Maps.transformValues(metrics, PackageMetrics::getComputationSteps);
   }
 
   @Override
   public synchronized Map<PackageIdentifier, Long> getNumTargets() {
-    return Maps.transformValues(metrics, PackageLoadMetrics::getNumTargets);
+    return Maps.transformValues(metrics, PackageMetrics::getNumTargets);
   }
 
   @Override
   public synchronized Map<PackageIdentifier, Long> getNumTransitiveLoads() {
-    return Maps.transformValues(metrics, PackageLoadMetrics::getNumTransitiveLoads);
+    return Maps.transformValues(metrics, PackageMetrics::getNumTransitiveLoads);
   }
 
   @Override
   public synchronized Map<PackageIdentifier, Long> getPackageOverhead() {
     return Maps.transformValues(
-        Maps.filterValues(metrics, PackageLoadMetrics::hasPackageOverhead),
-        PackageLoadMetrics::getPackageOverhead);
+        Maps.filterValues(metrics, PackageMetrics::hasPackageOverhead),
+        PackageMetrics::getPackageOverhead);
   }
 
   @Override
@@ -79,7 +79,7 @@
   }
 
   @Override
-  public synchronized ImmutableCollection<PackageLoadMetrics> getPackageLoadMetrics() {
+  public synchronized ImmutableCollection<PackageMetrics> getPackageMetrics() {
     // lazily set the pkgName when requested.
     return metrics.entrySet().stream()
         .map(e -> e.getValue().toBuilder().setName(e.getKey().toString()).build())
diff --git a/src/main/java/com/google/devtools/build/lib/packages/metrics/ExtremaPackageMetricsRecorder.java b/src/main/java/com/google/devtools/build/lib/packages/metrics/ExtremaPackageMetricsRecorder.java
index ca586d1..475344a 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/metrics/ExtremaPackageMetricsRecorder.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/metrics/ExtremaPackageMetricsRecorder.java
@@ -38,33 +38,33 @@
   private static final GoogleLogger logger = GoogleLogger.forEnclosingClass();
 
   @GuardedBy("this")
-  private final Extrema<PackageLoadMetricsContainer> slowestPackagesToLoad;
+  private final Extrema<PackageMetricsContainer> slowestPackagesToLoad;
 
   @GuardedBy("this")
-  private final Extrema<PackageLoadMetricsContainer> largestPackages;
+  private final Extrema<PackageMetricsContainer> largestPackages;
 
   @GuardedBy("this")
-  private final Extrema<PackageLoadMetricsContainer> packagesWithMostTransitiveLoads;
+  private final Extrema<PackageMetricsContainer> packagesWithMostTransitiveLoads;
 
   @GuardedBy("this")
-  private final Extrema<PackageLoadMetricsContainer> packagesWithMostComputationSteps;
+  private final Extrema<PackageMetricsContainer> packagesWithMostComputationSteps;
 
   @GuardedBy("this")
-  private final Extrema<PackageLoadMetricsContainer> packagesWithMostOverhead;
+  private final Extrema<PackageMetricsContainer> packagesWithMostOverhead;
 
   ExtremaPackageMetricsRecorder(int currentNumPackagesToTrack) {
     Preconditions.checkArgument(currentNumPackagesToTrack >= 0, "num packages must be >= 0");
     this.currentNumPackagesToTrack = currentNumPackagesToTrack;
     this.slowestPackagesToLoad =
-        Extrema.max(currentNumPackagesToTrack, PackageLoadMetricsContainer.LOAD_TIMES_COMP);
+        Extrema.max(currentNumPackagesToTrack, PackageMetricsContainer.LOAD_TIMES_COMP);
     this.largestPackages =
-        Extrema.max(currentNumPackagesToTrack, PackageLoadMetricsContainer.NUM_TARGETS_COMP);
+        Extrema.max(currentNumPackagesToTrack, PackageMetricsContainer.NUM_TARGETS_COMP);
     this.packagesWithMostTransitiveLoads =
-        Extrema.max(currentNumPackagesToTrack, PackageLoadMetricsContainer.TRANSITIVE_LOADS_COMP);
+        Extrema.max(currentNumPackagesToTrack, PackageMetricsContainer.TRANSITIVE_LOADS_COMP);
     this.packagesWithMostComputationSteps =
-        Extrema.max(currentNumPackagesToTrack, PackageLoadMetricsContainer.COMPUTATION_STEPS_COMP);
+        Extrema.max(currentNumPackagesToTrack, PackageMetricsContainer.COMPUTATION_STEPS_COMP);
     this.packagesWithMostOverhead =
-        Extrema.max(currentNumPackagesToTrack, PackageLoadMetricsContainer.OVERHEAD_COMP);
+        Extrema.max(currentNumPackagesToTrack, PackageMetricsContainer.OVERHEAD_COMP);
   }
 
   public int getNumPackageToTrack() {
@@ -72,8 +72,8 @@
   }
 
   @Override
-  public synchronized void recordMetrics(PackageIdentifier pkgId, PackageLoadMetrics metrics) {
-    PackageLoadMetricsContainer cont = PackageLoadMetricsContainer.create(pkgId, metrics);
+  public synchronized void recordMetrics(PackageIdentifier pkgId, PackageMetrics metrics) {
+    PackageMetricsContainer cont = PackageMetricsContainer.create(pkgId, metrics);
     slowestPackagesToLoad.aggregate(cont);
     packagesWithMostComputationSteps.aggregate(cont);
     largestPackages.aggregate(cont);
@@ -88,40 +88,40 @@
     return slowestPackagesToLoad.getExtremeElements().stream()
         .collect(
             Collectors.toMap(
-                PackageLoadMetricsContainer::getPackageIdentifier,
-                v -> v.getPackageLoadMetricsInternal().getLoadDuration(),
+                PackageMetricsContainer::getPackageIdentifier,
+                v -> v.getPackageMetricsInternal().getLoadDuration(),
                 (k, v) -> v,
                 LinkedHashMap::new)); // use a LinkedHashMap to ensure iteration order is maintained
   }
 
   @Override
   public synchronized Map<PackageIdentifier, Long> getComputationSteps() {
-    return toMap(packagesWithMostComputationSteps, PackageLoadMetrics::getComputationSteps);
+    return toMap(packagesWithMostComputationSteps, PackageMetrics::getComputationSteps);
   }
 
   @Override
   public synchronized Map<PackageIdentifier, Long> getNumTargets() {
-    return toMap(largestPackages, PackageLoadMetrics::getNumTargets);
+    return toMap(largestPackages, PackageMetrics::getNumTargets);
   }
 
   @Override
   public synchronized Map<PackageIdentifier, Long> getNumTransitiveLoads() {
-    return toMap(packagesWithMostTransitiveLoads, PackageLoadMetrics::getNumTransitiveLoads);
+    return toMap(packagesWithMostTransitiveLoads, PackageMetrics::getNumTransitiveLoads);
   }
 
   @Override
   public synchronized Map<PackageIdentifier, Long> getPackageOverhead() {
-    return toMap(packagesWithMostOverhead, PackageLoadMetrics::getPackageOverhead);
+    return toMap(packagesWithMostOverhead, PackageMetrics::getPackageOverhead);
   }
 
   private synchronized Map<PackageIdentifier, Long> toMap(
-      Extrema<PackageLoadMetricsContainer> ext, Function<PackageLoadMetrics, Long> fn) {
+      Extrema<PackageMetricsContainer> ext, Function<PackageMetrics, Long> fn) {
 
     return ext.getExtremeElements().stream()
         .collect(
             Collectors.toMap(
-                PackageLoadMetricsContainer::getPackageIdentifier,
-                v -> fn.apply(v.getPackageLoadMetricsInternal()),
+                PackageMetricsContainer::getPackageIdentifier,
+                v -> fn.apply(v.getPackageMetricsInternal()),
                 (k, v) -> v,
                 LinkedHashMap::new)); // use a LinkedHashMap to ensure iteration order is maintained
   }
@@ -140,23 +140,23 @@
     logIfNonEmpty(
         "Slowest packages (ms)",
         slowestPackagesToLoad.getExtremeElements(),
-        c -> Durations.toMillis(c.getPackageLoadMetricsInternal().getLoadDuration()));
+        c -> Durations.toMillis(c.getPackageMetricsInternal().getLoadDuration()));
     logIfNonEmpty(
         "Largest packages (num targets)",
         largestPackages.getExtremeElements(),
-        c -> c.getPackageLoadMetricsInternal().getNumTargets());
+        c -> c.getPackageMetricsInternal().getNumTargets());
     logIfNonEmpty(
         "Packages with most computation steps",
         packagesWithMostComputationSteps.getExtremeElements(),
-        c -> c.getPackageLoadMetricsInternal().getComputationSteps());
+        c -> c.getPackageMetricsInternal().getComputationSteps());
     logIfNonEmpty(
         "Packages with most transitive loads (num bzl files)",
         packagesWithMostTransitiveLoads.getExtremeElements(),
-        c -> c.getPackageLoadMetricsInternal().getNumTransitiveLoads());
+        c -> c.getPackageMetricsInternal().getNumTransitiveLoads());
     logIfNonEmpty(
         "Packages with most overhead",
         packagesWithMostOverhead.getExtremeElements(),
-        c -> c.getPackageLoadMetricsInternal().getPackageOverhead());
+        c -> c.getPackageMetricsInternal().getPackageOverhead());
     clear();
   }
 
@@ -166,21 +166,21 @@
   }
 
   @Override
-  public synchronized Collection<PackageLoadMetrics> getPackageLoadMetrics() {
+  public synchronized Collection<PackageMetrics> getPackageMetrics() {
     return Streams.concat(
             slowestPackagesToLoad.getExtremeElements().stream(),
             packagesWithMostComputationSteps.getExtremeElements().stream(),
             largestPackages.getExtremeElements().stream(),
             packagesWithMostTransitiveLoads.getExtremeElements().stream(),
             packagesWithMostOverhead.getExtremeElements().stream())
-        .map(PackageLoadMetricsContainer::getPackageLoadMetrics)
+        .map(PackageMetricsContainer::getPackageMetrics)
         .collect(toImmutableSet());
   }
 
   private static void logIfNonEmpty(
       String logLinePrefix,
-      List<PackageLoadMetricsContainer> extremeElements,
-      Function<PackageLoadMetricsContainer, Long> valueMapper) {
+      List<PackageMetricsContainer> extremeElements,
+      Function<PackageMetricsContainer, Long> valueMapper) {
     List<String> logString =
         extremeElements.stream()
             .map(v -> String.format("%s (%d)", v.getPackageIdentifier(), valueMapper.apply(v)))
diff --git a/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageLoadMetricsContainer.java b/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageLoadMetricsContainer.java
deleted file mode 100644
index 6ff0799..0000000
--- a/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageLoadMetricsContainer.java
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2020 The Bazel Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package com.google.devtools.build.lib.packages.metrics;
-
-import com.google.auto.value.AutoValue;
-import com.google.devtools.build.lib.cmdline.PackageIdentifier;
-import com.google.protobuf.util.Durations;
-import java.util.Comparator;
-
-/** Container class holding a PackageIdentifier and PackageMetrics proto. */
-@AutoValue
-public abstract class PackageLoadMetricsContainer {
-
-  /** Sorts by LoadTime Duration. */
-  public static final Comparator<PackageLoadMetricsContainer> LOAD_TIMES_COMP =
-      Comparator.comparing(
-          c -> c.getPackageLoadMetricsInternal().getLoadDuration(), Durations.comparator());
-  /** Sorts by Num Target count . */
-  public static final Comparator<PackageLoadMetricsContainer> NUM_TARGETS_COMP =
-      Comparator.comparingLong(c -> c.getPackageLoadMetricsInternal().getNumTargets());
-  /** Sorts by Comutation Steps count. */
-  public static final Comparator<PackageLoadMetricsContainer> COMPUTATION_STEPS_COMP =
-      Comparator.comparingLong(c -> c.getPackageLoadMetricsInternal().getComputationSteps());
-  /** Sorts by Transitive Load Count. */
-  public static final Comparator<PackageLoadMetricsContainer> TRANSITIVE_LOADS_COMP =
-      Comparator.comparingLong(c -> c.getPackageLoadMetricsInternal().getNumTransitiveLoads());
-  /** Sorts by Package Overhead. */
-  public static final Comparator<PackageLoadMetricsContainer> OVERHEAD_COMP =
-      Comparator.comparingLong(c -> c.getPackageLoadMetricsInternal().getPackageOverhead());
-
-  public static PackageLoadMetricsContainer create(
-      PackageIdentifier pkgId, PackageLoadMetrics metrics) {
-    return new AutoValue_PackageLoadMetricsContainer(pkgId, metrics);
-  }
-
-  public abstract PackageIdentifier getPackageIdentifier();
-
-  abstract PackageLoadMetrics getPackageLoadMetricsInternal();
-
-  /** Construct a full PackageMetrics object with the name set lazily from the PackageIdentifier. */
-  public PackageLoadMetrics getPackageLoadMetrics() {
-    return getPackageLoadMetricsInternal().toBuilder()
-        .setName(getPackageIdentifier().toString())
-        .build();
-  }
-}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsContainer.java b/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsContainer.java
new file mode 100644
index 0000000..4cab05a
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsContainer.java
@@ -0,0 +1,56 @@
+// Copyright 2020 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package com.google.devtools.build.lib.packages.metrics;
+
+import com.google.auto.value.AutoValue;
+import com.google.devtools.build.lib.cmdline.PackageIdentifier;
+import com.google.protobuf.util.Durations;
+import java.util.Comparator;
+
+/** Container class holding a PackageIdentifier and PackageMetrics proto. */
+@AutoValue
+public abstract class PackageMetricsContainer {
+
+  /** Sorts by LoadTime Duration. */
+  public static final Comparator<PackageMetricsContainer> LOAD_TIMES_COMP =
+      Comparator.comparing(
+          c -> c.getPackageMetricsInternal().getLoadDuration(), Durations.comparator());
+  /** Sorts by Num Target count . */
+  public static final Comparator<PackageMetricsContainer> NUM_TARGETS_COMP =
+      Comparator.comparingLong(c -> c.getPackageMetricsInternal().getNumTargets());
+  /** Sorts by Comutation Steps count. */
+  public static final Comparator<PackageMetricsContainer> COMPUTATION_STEPS_COMP =
+      Comparator.comparingLong(c -> c.getPackageMetricsInternal().getComputationSteps());
+  /** Sorts by Transitive Load Count. */
+  public static final Comparator<PackageMetricsContainer> TRANSITIVE_LOADS_COMP =
+      Comparator.comparingLong(c -> c.getPackageMetricsInternal().getNumTransitiveLoads());
+  /** Sorts by Package Overhead. */
+  public static final Comparator<PackageMetricsContainer> OVERHEAD_COMP =
+      Comparator.comparingLong(c -> c.getPackageMetricsInternal().getPackageOverhead());
+
+  public static PackageMetricsContainer create(PackageIdentifier pkgId, PackageMetrics metrics) {
+    return new AutoValue_PackageMetricsContainer(pkgId, metrics);
+  }
+
+  public abstract PackageIdentifier getPackageIdentifier();
+
+  abstract PackageMetrics getPackageMetricsInternal();
+
+  /** Construct a full PackageMetrics object with the name set lazily from the PackageIdentifier. */
+  public PackageMetrics getPackageMetrics() {
+    return getPackageMetricsInternal().toBuilder()
+        .setName(getPackageIdentifier().toString())
+        .build();
+  }
+}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsModule.java b/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsModule.java
index f96d10d..19b5323 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsModule.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsModule.java
@@ -48,14 +48,6 @@
             "Configures PackageMetrics to record all metrics for all packages. Disables Top-n INFO"
                 + " logging.")
     public boolean enableAllMetrics;
-
-    @Option(
-        name = "experimental_publish_package_metrics_in_bep",
-        defaultValue = "false",
-        documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
-        effectTags = {OptionEffectTag.BAZEL_MONITORING},
-        help = "Whether to publish package metrics in the BEP.")
-    public boolean publishPackageMetricsInBep;
   }
 
   private final PackageMetricsPackageLoadingListener packageLoadingListener;
@@ -91,7 +83,6 @@
             ? new CompletePackageMetricsRecorder()
             : new ExtremaPackageMetricsRecorder(Math.max(options.numberOfPackagesToTrack, 0));
     packageLoadingListener.setPackageMetricsRecorder(recorder);
-    packageLoadingListener.setPublishPackageMetricsInBep(options.publishPackageMetricsInBep);
   }
 
   @Override
diff --git a/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsPackageLoadingListener.java b/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsPackageLoadingListener.java
index 274efc2..053acc4 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsPackageLoadingListener.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsPackageLoadingListener.java
@@ -26,8 +26,6 @@
   @GuardedBy("this")
   private PackageMetricsRecorder recorder;
 
-  private boolean publishPackageMetricsInBep = false;
-
   @GuardedBy("PackageMetricsPackageLoadingListener.class")
   private static PackageMetricsPackageLoadingListener instance = null;
 
@@ -53,8 +51,8 @@
       return;
     }
 
-    PackageLoadMetrics.Builder builder =
-        PackageLoadMetrics.newBuilder()
+    PackageMetrics.Builder builder =
+        PackageMetrics.newBuilder()
             .setLoadDuration(Durations.fromNanos(loadTimeNanos))
             .setComputationSteps(pkg.getComputationSteps())
             .setNumTargets(pkg.getTargets().size())
@@ -72,14 +70,6 @@
     this.recorder = recorder;
   }
 
-  public void setPublishPackageMetricsInBep(boolean publishPackageMetricsInBep) {
-    this.publishPackageMetricsInBep = publishPackageMetricsInBep;
-  }
-
-  public boolean getPublishPackageMetricsInBep() {
-    return publishPackageMetricsInBep;
-  }
-
   /** Returns the PackageMetricsRecorder, if any, for the PackageLoadingListener. */
   public synchronized PackageMetricsRecorder getPackageMetricsRecorder() {
     return recorder;
diff --git a/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsRecorder.java b/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsRecorder.java
index f8b4cc4..79ea6c6 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsRecorder.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsRecorder.java
@@ -28,7 +28,7 @@
   }
 
   /** Records the metrics for a given package. */
-  void recordMetrics(PackageIdentifier pkgId, PackageLoadMetrics metrics);
+  void recordMetrics(PackageIdentifier pkgId, PackageMetrics metrics);
 
   /**
    * Returns a {@code Map<PackageIdentifier, Duration>} of recorded load durations. This may contain
@@ -70,5 +70,5 @@
   Type getRecorderType();
 
   /** If Type is ALL returns metrics for all Packages loaded. */
-  Collection<PackageLoadMetrics> getPackageLoadMetrics();
+  Collection<PackageMetrics> getPackageMetrics();
 }
diff --git a/src/main/java/com/google/devtools/build/lib/packages/metrics/package_load_metrics.proto b/src/main/java/com/google/devtools/build/lib/packages/metrics/package_metrics.proto
similarity index 91%
rename from src/main/java/com/google/devtools/build/lib/packages/metrics/package_load_metrics.proto
rename to src/main/java/com/google/devtools/build/lib/packages/metrics/package_metrics.proto
index e27ecce..c643fcd 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/metrics/package_load_metrics.proto
+++ b/src/main/java/com/google/devtools/build/lib/packages/metrics/package_metrics.proto
@@ -20,12 +20,12 @@
 option java_package = "com.google.devtools.build.lib.packages.metrics";
 option java_multiple_files = true;
 
-// Message used to concisely report all package metrics.
-message PackageLoadMetrics {
+// Message used to consisely report all package metrics.
+message PackageMetrics {
   // Name of the package.
   optional string name = 1;
 
-  // Wall-time duration it took to construct the package.
+  // Walltime Duration it took to construct the package.
   optional google.protobuf.Duration load_duration = 2;
 
   // Number of targets created in the package.
diff --git a/src/test/java/com/google/devtools/build/lib/packages/metrics/BUILD b/src/test/java/com/google/devtools/build/lib/packages/metrics/BUILD
index 366c3ca..db6852f 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/metrics/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/packages/metrics/BUILD
@@ -21,7 +21,7 @@
         "//src/main/java/com/google/devtools/build/lib/cmdline",
         "//src/main/java/com/google/devtools/build/lib/packages",
         "//src/main/java/com/google/devtools/build/lib/packages/metrics",
-        "//src/main/java/com/google/devtools/build/lib/packages/metrics:package_load_metrics_java_proto",
+        "//src/main/java/com/google/devtools/build/lib/packages/metrics:package_metrics_java_proto",
         "//src/main/java/net/starlark/java/eval",
         "//third_party:guava",
         "//third_party:junit4",
diff --git a/src/test/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsPackageLoadingListenerTest.java b/src/test/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsPackageLoadingListenerTest.java
index 9df24da..1991882 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsPackageLoadingListenerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsPackageLoadingListenerTest.java
@@ -410,8 +410,8 @@
 
     recordEverything();
 
-    PackageLoadMetrics pkg1 =
-        PackageLoadMetrics.newBuilder()
+    PackageMetrics pkg1 =
+        PackageMetrics.newBuilder()
             .setName("my/pkg1")
             .setLoadDuration(Durations.fromMillis(42))
             .setComputationSteps(1000)
@@ -420,8 +420,8 @@
             .setPackageOverhead(100_000)
             .build();
 
-    PackageLoadMetrics pkg2 =
-        PackageLoadMetrics.newBuilder()
+    PackageMetrics pkg2 =
+        PackageMetrics.newBuilder()
             .setName("my/pkg2")
             .setLoadDuration(Durations.fromMillis(43))
             .setComputationSteps(100)
@@ -430,8 +430,8 @@
             .setPackageOverhead(200_000)
             .build();
 
-    PackageLoadMetrics pkg3 =
-        PackageLoadMetrics.newBuilder()
+    PackageMetrics pkg3 =
+        PackageMetrics.newBuilder()
             .setName("my/pkg3")
             .setLoadDuration(Durations.fromMillis(44))
             .setComputationSteps(10)
@@ -440,7 +440,7 @@
             .setPackageOverhead(300_000)
             .build();
 
-    assertThat(underTest.getPackageMetricsRecorder().getPackageLoadMetrics())
+    assertThat(underTest.getPackageMetricsRecorder().getPackageMetrics())
         .containsExactly(pkg1, pkg2, pkg3);
     recorder.loadingFinished();
     assertAllMapsEmpty(recorder);
@@ -453,8 +453,8 @@
 
     recordEverything();
 
-    PackageLoadMetrics pkg1 =
-        PackageLoadMetrics.newBuilder()
+    PackageMetrics pkg1 =
+        PackageMetrics.newBuilder()
             .setName("my/pkg1")
             .setLoadDuration(Durations.fromMillis(42))
             .setComputationSteps(1000)
@@ -463,8 +463,8 @@
             .setPackageOverhead(100_000)
             .build();
 
-    PackageLoadMetrics pkg2 =
-        PackageLoadMetrics.newBuilder()
+    PackageMetrics pkg2 =
+        PackageMetrics.newBuilder()
             .setName("my/pkg2")
             .setLoadDuration(Durations.fromMillis(43))
             .setComputationSteps(100)
@@ -473,8 +473,8 @@
             .setPackageOverhead(200_000)
             .build();
 
-    PackageLoadMetrics pkg3 =
-        PackageLoadMetrics.newBuilder()
+    PackageMetrics pkg3 =
+        PackageMetrics.newBuilder()
             .setName("my/pkg3")
             .setLoadDuration(Durations.fromMillis(44))
             .setComputationSteps(10)
@@ -483,7 +483,7 @@
             .setPackageOverhead(300_000)
             .build();
 
-    assertThat(underTest.getPackageMetricsRecorder().getPackageLoadMetrics())
+    assertThat(underTest.getPackageMetricsRecorder().getPackageMetrics())
         .containsExactly(pkg1, pkg2, pkg3);
     recorder.loadingFinished();
     assertAllMapsEmpty(recorder);