0

Split sliding_window_size and max_histogram_buckets for the individual LCPP subprojects

Currently, LCPP projects share the following fields.

- sliding_window_size
- max_histogram_buckets

Sharing these fields prevents us from specifying different values for
the individual subprojects of LCPP.

Bug: 40063266
Change-Id: I92d88f17a48092f9f9200cdb1a72150509367293
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6389125
Reviewed-by: Kouhei Ueno <kouhei@chromium.org>
Reviewed-by: Shunya Shishido <sisidovski@chromium.org>
Reviewed-by: Yoichi Osato <yoichio@chromium.org>
Commit-Queue: Minoru Chikamune <chikamune@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1437957}
This commit is contained in:
Minoru Chikamune
2025-03-26 00:04:30 -07:00
committed by Chromium LUCI CQ
parent dfbb2508b4
commit 5974b95121
5 changed files with 179 additions and 29 deletions
chrome/browser/predictors/lcp_critical_path_predictor
testing/variations
third_party/blink
common
public

@ -1000,27 +1000,29 @@ LcppDataInputs::~LcppDataInputs() = default;
bool UpdateLcppStatWithLcppDataInputs(const LcppDataInputs& inputs,
LcppStat& stat) {
bool data_updated = false;
int sliding_window_size =
blink::features::kLCPCriticalPathPredictorHistogramSlidingWindowSize
.Get();
int max_histogram_buckets =
blink::features::kLCPCriticalPathPredictorMaxHistogramBuckets.Get();
data_updated |= RecordLcpElementLocatorHistogram(
sliding_window_size, max_histogram_buckets, inputs.lcp_element_locator,
stat);
blink::features::kLCPCriticalPathPredictorSlidingWindowSize.Get(),
blink::features::kLCPCriticalPathPredictorMaxHistogramBuckets.Get(),
inputs.lcp_element_locator, stat);
data_updated |= RecordLcpInfluencerScriptUrlsHistogram(
sliding_window_size, max_histogram_buckets, inputs.lcp_influencer_scripts,
stat);
blink::features::kLCPScriptObserverSlidingWindowSize.Get(),
blink::features::kLCPScriptObserverMaxHistogramBuckets.Get(),
inputs.lcp_influencer_scripts, stat);
data_updated |= RecordFetchedFontUrlsHistogram(
sliding_window_size, max_histogram_buckets, inputs.font_urls, stat);
blink::features::kLCPPFontURLPredictorSlidingWindowSize.Get(),
blink::features::kLCPPFontURLPredictorMaxHistogramBuckets.Get(),
inputs.font_urls, stat);
data_updated |= RecordFetchedSubresourceUrlsHistogram(
sliding_window_size, max_histogram_buckets, inputs.subresource_urls,
stat);
blink::features::kHttpDiskCachePrewarmingSlidingWindowSize.Get(),
blink::features::kHttpDiskCachePrewarmingMaxHistogramBuckets.Get(),
inputs.subresource_urls, stat);
data_updated |= RecordPreconnectOriginsHistogram(
sliding_window_size, max_histogram_buckets, inputs.preconnect_origins,
stat);
blink::features::kLCPPAutoPreconnectSlidingWindowSize.Get(),
blink::features::kLCPPAutoPreconnectMaxHistogramBuckets.Get(),
inputs.preconnect_origins, stat);
data_updated |= RecordUnusedPreloadUrlsHistogram(
sliding_window_size, max_histogram_buckets,
blink::features::kLCPPDeferUnusedPreloadSlidingWindowSize.Get(),
blink::features::kLCPPDeferUnusedPreloadMaxHistogramBuckets.Get(),
inputs.unused_preload_resources, stat);
base::UmaHistogramCounts10000("Blink.LCPP.ReportedFontCount",
base::checked_cast<int>(inputs.font_url_count));

@ -1466,15 +1466,49 @@ class LcppDataMapFeatures
LcppDataMapFeatures() {
scoped_feature_list_.InitWithFeatures(GetParam(),
/*disabled_features=*/{});
constexpr char kSlidingWindowSize[] = "5";
constexpr char kMaxHistogramBuckets[] = "2";
scoped_feature_list_for_sliding_window_and_buckets_
.InitWithFeaturesAndParameters(
{{blink::features::kLCPCriticalPathPredictor,
{{blink::features::
kLCPCriticalPathPredictorHistogramSlidingWindowSize.name,
"5"},
{blink::features::kLCPCriticalPathPredictorMaxHistogramBuckets
.name,
"2"}}}},
{
{blink::features::kLCPCriticalPathPredictor,
{{blink::features::kLCPCriticalPathPredictorSlidingWindowSize
.name,
kSlidingWindowSize},
{blink::features::kLCPCriticalPathPredictorMaxHistogramBuckets
.name,
kMaxHistogramBuckets}}},
{blink::features::kLCPScriptObserver,
{{blink::features::kLCPScriptObserverSlidingWindowSize.name,
kSlidingWindowSize},
{blink::features::kLCPScriptObserverMaxHistogramBuckets.name,
kMaxHistogramBuckets}}},
{blink::features::kLCPPFontURLPredictor,
{{blink::features::kLCPPFontURLPredictorSlidingWindowSize.name,
kSlidingWindowSize},
{blink::features::kLCPPFontURLPredictorMaxHistogramBuckets
.name,
kMaxHistogramBuckets}}},
{blink::features::kHttpDiskCachePrewarming,
{{blink::features::kHttpDiskCachePrewarmingSlidingWindowSize
.name,
kSlidingWindowSize},
{blink::features::kHttpDiskCachePrewarmingMaxHistogramBuckets
.name,
kMaxHistogramBuckets}}},
{blink::features::kLCPPAutoPreconnectLcpOrigin,
{{blink::features::kLCPPAutoPreconnectSlidingWindowSize.name,
kSlidingWindowSize},
{blink::features::kLCPPAutoPreconnectMaxHistogramBuckets.name,
kMaxHistogramBuckets}}},
{blink::features::kLCPPDeferUnusedPreload,
{{blink::features::kLCPPDeferUnusedPreloadSlidingWindowSize
.name,
kSlidingWindowSize},
{blink::features::kLCPPDeferUnusedPreloadMaxHistogramBuckets
.name,
kMaxHistogramBuckets}}},
},
{});
}

@ -13605,12 +13605,12 @@
"lcpp_adjust_image_load_priority_override_first_n_boost": "true",
"lcpp_enable_image_load_priority_for_htmlimageelement": "false",
"lcpp_enable_perf_improvements": "true",
"lcpp_histogram_sliding_window_size": "1000",
"lcpp_image_load_priority": "medium",
"lcpp_max_element_locator_length": "1024",
"lcpp_max_histogram_buckets": "10",
"lcpp_max_hosts_to_track": "100",
"lcpp_recorded_lcp_element_types": "image_only"
"lcpp_recorded_lcp_element_types": "image_only",
"lcpp_sliding_window_size": "1000"
},
"enable_features": [
"LCPCriticalPathPredictor"

@ -1318,9 +1318,9 @@ BASE_FEATURE_PARAM(int,
100);
BASE_FEATURE_PARAM(int,
kLCPCriticalPathPredictorHistogramSlidingWindowSize,
kLCPCriticalPathPredictorSlidingWindowSize,
&kLCPCriticalPathPredictor,
"lcpp_histogram_sliding_window_size",
"lcpp_sliding_window_size",
1000);
BASE_FEATURE_PARAM(int,
@ -1365,6 +1365,18 @@ BASE_FEATURE_PARAM(bool,
"lcpscriptobserver_adjust_image_load_priority",
false);
BASE_FEATURE_PARAM(int,
kLCPScriptObserverSlidingWindowSize,
&kLCPScriptObserver,
"lcpscriptobserver_sliding_window_size",
1000);
BASE_FEATURE_PARAM(int,
kLCPScriptObserverMaxHistogramBuckets,
&kLCPScriptObserver,
"lcpscriptobserver_max_histogram_buckets",
10);
BASE_FEATURE(kLCPTimingPredictorPrerender2,
"LCPTimingPredictorPrerender2",
base::FEATURE_DISABLED_BY_DEFAULT);
@ -1385,6 +1397,18 @@ BASE_FEATURE_PARAM(int,
"lcpp_preconnect_max_origins",
2);
BASE_FEATURE_PARAM(int,
kLCPPAutoPreconnectSlidingWindowSize,
&kLCPPAutoPreconnectLcpOrigin,
"lcpp_preconnect_sliding_window_size",
1000);
BASE_FEATURE_PARAM(int,
kLCPPAutoPreconnectMaxHistogramBuckets,
&kLCPPAutoPreconnectLcpOrigin,
"lcpp_preconnect_max_histogram_buckets",
10);
BASE_FEATURE(kLCPPDeferUnusedPreload,
"LCPPDeferUnusedPreload",
base::FEATURE_DISABLED_BY_DEFAULT);
@ -1442,6 +1466,18 @@ BASE_FEATURE_ENUM_PARAM(LcppDeferUnusedPreloadTiming,
LcppDeferUnusedPreloadTiming::kPostTask,
&lcpp_defer_unused_preload_timing);
BASE_FEATURE_PARAM(int,
kLCPPDeferUnusedPreloadSlidingWindowSize,
&kLCPPDeferUnusedPreload,
"lcpp_unused_preload_sliding_window_size",
1000);
BASE_FEATURE_PARAM(int,
kLCPPDeferUnusedPreloadMaxHistogramBuckets,
&kLCPPDeferUnusedPreload,
"lcpp_unused_preload_max_histogram_buckets",
10);
BASE_FEATURE(kLCPPFontURLPredictor,
"LCPPFontURLPredictor",
base::FEATURE_DISABLED_BY_DEFAULT);
@ -1492,6 +1528,18 @@ BASE_FEATURE_PARAM(bool,
"lcpp_cross_site_font_prediction_allowed",
false);
BASE_FEATURE_PARAM(int,
kLCPPFontURLPredictorSlidingWindowSize,
&kLCPPFontURLPredictor,
"lcpp_font_sliding_window_size",
1000);
BASE_FEATURE_PARAM(int,
kLCPPFontURLPredictorMaxHistogramBuckets,
&kLCPPFontURLPredictor,
"lcpp_font_max_histogram_buckets",
10);
BASE_FEATURE(kLCPPInitiatorOrigin,
"LCPPInitiatorOrigin",
base::FEATURE_ENABLED_BY_DEFAULT);
@ -1633,6 +1681,18 @@ BASE_FEATURE_PARAM(bool,
"http_disk_cache_prewarming_skip_during_browser_startup",
true);
BASE_FEATURE_PARAM(int,
kHttpDiskCachePrewarmingSlidingWindowSize,
&kHttpDiskCachePrewarming,
"http_disk_cache_prewarming_sliding_window_size",
1000);
BASE_FEATURE_PARAM(int,
kHttpDiskCachePrewarmingMaxHistogramBuckets,
&kHttpDiskCachePrewarming,
"http_disk_cache_prewarming_max_histogram_buckets",
10);
BASE_FEATURE(kLegacyParsingOfXContentTypeOptions,
"LegacyParsingOfXContentTypeOptions",
base::FEATURE_DISABLED_BY_DEFAULT);

@ -836,11 +836,10 @@ BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE_PARAM(
int,
kLCPCriticalPathPredictorMaxHostsToTrack);
// The virtual sliding window size for LCP critical path predictor (LCPP)
// histogram.
// The virtual sliding window size for LCP critical path predictor (LCPP).
BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE_PARAM(
int,
kLCPCriticalPathPredictorHistogramSlidingWindowSize);
kLCPCriticalPathPredictorSlidingWindowSize);
// The max histogram bucket count that can be stored in the LCP critical path
// predictor (LCPP) database.
@ -876,6 +875,17 @@ BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE_PARAM(
bool,
kLCPScriptObserverAdjustImageLoadPriority);
// The virtual sliding window size for kLCPScriptObserver.
BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE_PARAM(
int,
kLCPScriptObserverSlidingWindowSize);
// The max histogram bucket count that can be stored in the LCP critical path
// predictor (LCPP) database for kLCPScriptObserver.
BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE_PARAM(
int,
kLCPScriptObserverMaxHistogramBuckets);
// If enabled, Prerender2 by Speculation Rules API is delayed until
// LCP is finished.
BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kLCPTimingPredictorPrerender2);
@ -894,6 +904,17 @@ BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE_PARAM(
int,
kkLCPPAutoPreconnectMaxPreconnectOriginsCount);
// The virtual sliding window size for kLCPPAutoPreconnectLcpOrigin.
BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE_PARAM(
int,
kLCPPAutoPreconnectSlidingWindowSize);
// The max histogram bucket count that can be stored in the LCP critical path
// predictor (LCPP) database for kLCPPAutoPreconnectLcpOrigin.
BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE_PARAM(
int,
kLCPPAutoPreconnectMaxHistogramBuckets);
// If enabled, unused preload requests are deferred to the timing on LCP.
BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kLCPPDeferUnusedPreload);
@ -947,6 +968,17 @@ enum class LcppDeferUnusedPreloadTiming {
BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE_PARAM(LcppDeferUnusedPreloadTiming,
kLcppDeferUnusedPreloadTiming);
// The virtual sliding window size for kLCPPDeferUnusedPreload.
BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE_PARAM(
int,
kLCPPDeferUnusedPreloadSlidingWindowSize);
// The max histogram bucket count that can be stored in the LCP critical path
// predictor (LCPP) database for kLCPPDeferUnusedPreload.
BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE_PARAM(
int,
kLCPPDeferUnusedPreloadMaxHistogramBuckets);
// If enabled, fetched font URLs are observed to predict font usage in the
// future navigation.
BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kLCPPFontURLPredictor);
@ -996,6 +1028,17 @@ BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE_PARAM(
bool,
kLCPPCrossSiteFontPredictionAllowed);
// The virtual sliding window size for kLCPPFontURLPredictor.
BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE_PARAM(
int,
kLCPPFontURLPredictorSlidingWindowSize);
// The max histogram bucket count that can be stored in the LCP critical path
// predictor (LCPP) database for kLCPPFontURLPredictor.
BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE_PARAM(
int,
kLCPPFontURLPredictorMaxHistogramBuckets);
// If enabled, LCPP learns with a navigation-initiator origin.
BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kLCPPInitiatorOrigin);
@ -1112,6 +1155,17 @@ BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE_PARAM(
bool,
kHttpDiskCachePrewarmingSkipDuringBrowserStartup);
// The virtual sliding window size for kLCPScriptObserver.
BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE_PARAM(
int,
kHttpDiskCachePrewarmingSlidingWindowSize);
// The max histogram bucket count that can be stored in the LCP critical path
// predictor (LCPP) database for kLCPScriptObserver.
BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE_PARAM(
int,
kHttpDiskCachePrewarmingMaxHistogramBuckets);
// Kill-switch for new parsing behaviour of the X-Content-Type-Options header.
// (Should be removed after the new behaviour has been launched.)
BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kLegacyParsingOfXContentTypeOptions);