commit | e78a4a0ae853fdb4b5941f179ca96a7dab45400c | [log] [tgz] |
---|---|---|
author | Tsuyoshi Horo <horo@chromium.org> | Tue Nov 21 01:58:58 2023 |
committer | Chromium LUCI CQ <chromium-scoped@luci-project-accounts.iam.gserviceaccount.com> | Tue Nov 21 01:58:58 2023 |
tree | 63c869925c07ff138cae459491e138d2f452b8d0 | |
parent | dfd379b2b032eb4e948e7eed25db06434613521f [diff] |
Introduce a new flag to reduce TransferSizeUpdated IPC This CL introduces a new ReduceTransferSizeUpdatedIPC flag. When this feature is enabled Chromium will send TransferSizeUpdated IPC from the network service only when DevTools is attached or the request is for an ad request. The cost of sending and receiving IPC is not zero. So we hope this can improve Chromium’s performance and reduce the power consumption. Note: This feature affects metrics for non-ad resources. We lose the ability to record incomplete resources in metrics. # Context Currently the network service sends the OnTransferSizeUpdated IPC almost every time it reads the data from the network stack. But the TransferSizeUpdated IPC is used only for updating DevTools and recording metrics. Normal users don’t open DevTools while browsing Web pages. And for normal requests, we don’t need to measure the transferred data size in real time. The total transferred data can be obtained from URLLoaderCompletionStatus.encoded_data_length which is passed in OnComplete() IPC. PageResourceDataUse::DidCompleteResponse() is getting this value in the renderer process and sending the data to MetricsWebContentsObserver in the browser process. But for ad requests, the browser process needs to know the transferred data size in real time for Heavy ad intervention. So the network service will continue sending OnTransferSizeUpdated IPC if DevTools is attached or the request is for an ad even when this feature is enabled. # History of sending the transfer size - For legacy IPC, https://crrev.com/80965 started sending the transfer size in the existing ResourceMsg_DataReceived IPC to show it in DevTools. - For mojo-loading without network service, https://crrev.com/439697 started sending the transfer size using a new OnTransferSizeUpdated IPC only when DevTools is attached. - For network service, https://crrev.com/545109 started sending the transfer size using the OnTransferSizeUpdated IPC only when DevTools is attached. But https://crrev.com/585052 changed it to send the OnTransferSizeUpdated IPC even when DevTools is not attached to fix the PageLoadMetricsBrowserTest.ReceivedCompleteResources test failure. This test is relying on the fact that MetricsWebContentsObserver in the browser process can observe the transferred data size even when the request is not finished. This is true when the network service sends the OnTransferSizeUpdated IPC almost every time it reads the data from the network stack. But MetricsWebContentsObserver needs to measure the transferred data size in real time only when the request is for ad. Bug: 1502329 Change-Id: I30b536541995565dd5954e579caeefa36b6729a0 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5029976 Reviewed-by: John Delaney <johnidel@chromium.org> Commit-Queue: Tsuyoshi Horo <horo@chromium.org> Reviewed-by: Clark DuVall <cduvall@chromium.org> Cr-Commit-Position: refs/heads/main@{#1227178}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
To check out the source code locally, don't use git clone
! Instead, follow the instructions on how to get the code.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure .
For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.
If you found a bug, please file it at https://crbug.com/new.