Files
cromite/build/patches/Remove-support-for-device-memory-and-cpu-recovery.patch

258 lines
12 KiB
Diff

From: uazo <uazo@users.noreply.github.com>
Date: Tue, 27 Jun 2023 11:11:53 +0000
Subject: Remove support for device memory and cpu recovery
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../v8_memory/web_memory_impl.cc | 6 ++++++
...ort-for-device-memory-and-cpu-recovery.inc | 3 +++
...ort-for-device-memory-and-cpu-recovery.inc | 2 ++
.../browser/blob/blob_memory_controller.cc | 20 ++++++++++---------
.../browser/quota/quota_device_info_helper.cc | 17 ++++++++++++++--
.../approximated_device_memory.cc | 7 ++++++-
.../frame/navigator_concurrent_hardware.cc | 8 ++++++--
.../measure_memory_controller.cc | 5 +++++
.../blink/renderer/core/timing/memory_info.cc | 14 ++++++++++---
.../core/timing/window_performance.cc | 2 +-
10 files changed, 66 insertions(+), 18 deletions(-)
create mode 100644 cromite_flags/third_party/blink/common/features_cc/Remove-support-for-device-memory-and-cpu-recovery.inc
create mode 100644 cromite_flags/third_party/blink/common/features_h/Remove-support-for-device-memory-and-cpu-recovery.inc
diff --git a/components/performance_manager/v8_memory/web_memory_impl.cc b/components/performance_manager/v8_memory/web_memory_impl.cc
--- a/components/performance_manager/v8_memory/web_memory_impl.cc
+++ b/components/performance_manager/v8_memory/web_memory_impl.cc
@@ -26,6 +26,7 @@
#include "content/public/common/content_switches.h"
#include "url/gurl.h"
#include "url/origin.h"
+#include "third_party/blink/public/common/features.h"
namespace performance_manager {
@@ -111,6 +112,11 @@ WebMeasureMemorySecurityChecker::Create() {
bool WebMeasureMemorySecurityCheckerImpl::IsMeasureMemoryAllowed(
const FrameNode* frame) const {
+ if (!base::FeatureList::IsEnabled(
+ blink::features::kWebMeasureMemoryViaPerformanceManager)) {
+ return false;
+ }
+
// TODO(crbug.com/40132061): The frame may have navigated since it sent the
// measureMemory request. We could return true if the new document is allowed
// to measure memory, but the actual document that sent the request is not.
diff --git a/cromite_flags/third_party/blink/common/features_cc/Remove-support-for-device-memory-and-cpu-recovery.inc b/cromite_flags/third_party/blink/common/features_cc/Remove-support-for-device-memory-and-cpu-recovery.inc
new file mode 100644
--- /dev/null
+++ b/cromite_flags/third_party/blink/common/features_cc/Remove-support-for-device-memory-and-cpu-recovery.inc
@@ -0,0 +1,3 @@
+CROMITE_FEATURE(kWebMeasureMemoryViaPerformanceManager,
+ "WebMeasureMemoryViaPerformanceManager",
+ base::FEATURE_DISABLED_BY_DEFAULT);
diff --git a/cromite_flags/third_party/blink/common/features_h/Remove-support-for-device-memory-and-cpu-recovery.inc b/cromite_flags/third_party/blink/common/features_h/Remove-support-for-device-memory-and-cpu-recovery.inc
new file mode 100644
--- /dev/null
+++ b/cromite_flags/third_party/blink/common/features_h/Remove-support-for-device-memory-and-cpu-recovery.inc
@@ -0,0 +1,2 @@
+BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(
+ kWebMeasureMemoryViaPerformanceManager);
diff --git a/storage/browser/blob/blob_memory_controller.cc b/storage/browser/blob/blob_memory_controller.cc
--- a/storage/browser/blob/blob_memory_controller.cc
+++ b/storage/browser/blob/blob_memory_controller.cc
@@ -53,6 +53,15 @@ using MemoryAllocation = BlobMemoryController::MemoryAllocation;
using QuotaAllocationTask = BlobMemoryController::QuotaAllocationTask;
using DiskSpaceFuncPtr = BlobMemoryController::DiskSpaceFuncPtr;
+// static
+#if BUILDFLAG(IS_ANDROID)
+constexpr base::ByteCount approximated_device_memory_gb_ = base::GiB(4.0);
+constexpr int64_t approximated_device_disk_size = 8ull * 1024 * 1024 * 1024;
+#else
+constexpr base::ByteCount approximated_device_memory_gb_ = base::GiB(8.0);
+constexpr int64_t approximated_device_disk_size = 200ull * 1024 * 1024 * 1024;
+#endif
+
File::Error CreateBlobDirectory(const FilePath& blob_storage_dir) {
File::Error error = File::FILE_OK;
base::CreateDirectoryAndGetError(blob_storage_dir, &error);
@@ -83,22 +92,15 @@ BlobStorageLimits CalculateBlobStorageLimitsImpl(
uint64_t memory_size =
optional_memory_size_for_testing
? optional_memory_size_for_testing.value()
- : base::SysInfo::AmountOfPhysicalMemory().InBytesUnsigned();
+ : approximated_device_memory_gb_.InBytesUnsigned();
if (disk_enabled && CreateBlobDirectory(storage_dir) == base::File::FILE_OK)
- disk_size = base::SysInfo::AmountOfTotalDiskSpace(storage_dir).value_or(-1);
+ disk_size = approximated_device_disk_size;
BlobStorageLimits limits;
// Don't do specialty configuration for error size (-1).
if (memory_size > 0) {
-#if !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_ANDROID) && \
- defined(ARCH_CPU_64_BITS)
limits.max_blob_in_memory_space = base::GiB(2).InBytesUnsigned();
-#elif BUILDFLAG(IS_ANDROID)
- limits.max_blob_in_memory_space = static_cast<size_t>(memory_size / 100);
-#else
- limits.max_blob_in_memory_space = static_cast<size_t>(memory_size / 5);
-#endif
}
// Devices just on the edge (RAM == 256MB) should not fail because
// max_blob_in_memory_space turns out smaller than min_page_file_size
diff --git a/storage/browser/quota/quota_device_info_helper.cc b/storage/browser/quota/quota_device_info_helper.cc
--- a/storage/browser/quota/quota_device_info_helper.cc
+++ b/storage/browser/quota/quota_device_info_helper.cc
@@ -8,17 +8,30 @@
namespace storage {
+namespace {
+
+// static
+#if BUILDFLAG(IS_ANDROID)
+constexpr base::ByteCount approximated_device_memory_gb_ = base::GiB(4.0);
+constexpr int64_t approximated_device_disk_size = 8ull * 1024 * 1024 * 1024;
+#else
+constexpr base::ByteCount approximated_device_memory_gb_ = base::GiB(8.0);
+constexpr int64_t approximated_device_disk_size = 200ull * 1024 * 1024 * 1024;
+#endif
+
+}
+
QuotaDeviceInfoHelper::~QuotaDeviceInfoHelper() = default;
int64_t QuotaDeviceInfoHelper::AmountOfTotalDiskSpace(
const base::FilePath& path) const {
- int64_t disk_space = base::SysInfo::AmountOfTotalDiskSpace(path).value_or(-1);
+ int64_t disk_space = approximated_device_disk_size;
UMA_HISTOGRAM_BOOLEAN("Quota.TotalDiskSpaceIsZero", disk_space <= 0);
return disk_space;
}
uint64_t QuotaDeviceInfoHelper::AmountOfPhysicalMemory() const {
- return base::SysInfo::AmountOfPhysicalMemory().InBytesUnsigned();
+ return approximated_device_memory_gb_.InBytesUnsigned();
}
} // namespace storage
diff --git a/third_party/blink/common/device_memory/approximated_device_memory.cc b/third_party/blink/common/device_memory/approximated_device_memory.cc
--- a/third_party/blink/common/device_memory/approximated_device_memory.cc
+++ b/third_party/blink/common/device_memory/approximated_device_memory.cc
@@ -4,6 +4,7 @@
#include "third_party/blink/public/common/device_memory/approximated_device_memory.h"
+#include "build/build_config.h"
#include "base/check_op.h"
#include "base/feature_list.h"
#include "base/system/sys_info.h"
@@ -12,7 +13,11 @@
namespace blink {
// static
-float ApproximatedDeviceMemory::approximated_device_memory_gb_ = 0.0;
+#if BUILDFLAG(IS_ANDROID)
+float ApproximatedDeviceMemory::approximated_device_memory_gb_ = 4.0;
+#else
+float ApproximatedDeviceMemory::approximated_device_memory_gb_ = 8.0;
+#endif
int64_t ApproximatedDeviceMemory::physical_memory_mb_ = 0;
// static
diff --git a/third_party/blink/renderer/core/frame/navigator_concurrent_hardware.cc b/third_party/blink/renderer/core/frame/navigator_concurrent_hardware.cc
--- a/third_party/blink/renderer/core/frame/navigator_concurrent_hardware.cc
+++ b/third_party/blink/renderer/core/frame/navigator_concurrent_hardware.cc
@@ -3,13 +3,17 @@
// found in the LICENSE file.
#include "third_party/blink/renderer/core/frame/navigator_concurrent_hardware.h"
-
+#include "build/build_config.h"
#include "base/system/sys_info.h"
namespace blink {
unsigned NavigatorConcurrentHardware::hardwareConcurrency() const {
- return static_cast<unsigned>(base::SysInfo::NumberOfProcessors());
+#if BUILDFLAG(IS_ANDROID)
+ return static_cast<unsigned>(4);
+#else
+ return static_cast<unsigned>(8);
+#endif
}
} // namespace blink
diff --git a/third_party/blink/renderer/core/timing/measure_memory/measure_memory_controller.cc b/third_party/blink/renderer/core/timing/measure_memory/measure_memory_controller.cc
--- a/third_party/blink/renderer/core/timing/measure_memory/measure_memory_controller.cc
+++ b/third_party/blink/renderer/core/timing/measure_memory/measure_memory_controller.cc
@@ -10,6 +10,7 @@
#include "base/rand_util.h"
#include "components/performance_manager/public/mojom/coordination_unit.mojom-blink.h"
#include "services/metrics/public/cpp/ukm_builders.h"
+#include "third_party/blink/public/common/features.h"
#include "third_party/blink/public/platform/platform.h"
#include "third_party/blink/renderer/bindings/core/v8/script_promise.h"
#include "third_party/blink/renderer/bindings/core/v8/to_v8_traits.h"
@@ -86,6 +87,10 @@ enum class ApiStatus {
};
ApiStatus CheckMeasureMemoryAvailability() {
+ if (!base::FeatureList::IsEnabled(
+ features::kWebMeasureMemoryViaPerformanceManager)) {
+ return ApiStatus::kNotAvailableDueToFlag;
+ }
if (!RuntimeEnabledFeatures::PerformanceManagerInstrumentationEnabled()) {
return ApiStatus::kNotAvailableDueToResourceCoordinator;
}
diff --git a/third_party/blink/renderer/core/timing/memory_info.cc b/third_party/blink/renderer/core/timing/memory_info.cc
--- a/third_party/blink/renderer/core/timing/memory_info.cc
+++ b/third_party/blink/renderer/core/timing/memory_info.cc
@@ -34,6 +34,8 @@
#include "base/time/default_tick_clock.h"
#include "base/time/time.h"
+#include "base/rand_util.h"
+#include "build/build_config.h"
#include "third_party/blink/renderer/core/frame/settings.h"
#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
#include "third_party/blink/renderer/platform/wtf/math_extras.h"
@@ -43,15 +45,21 @@ namespace blink {
static constexpr base::TimeDelta kTwentyMinutes = base::Minutes(20);
static constexpr base::TimeDelta kFiftyMs = base::Milliseconds(50);
+#if BUILDFLAG(IS_ANDROID)
+static constexpr int64_t heap_size_limit = 528744448;
+#else
+static constexpr int64_t heap_size_limit = 4294705152;
+#endif
static void GetHeapSize(HeapInfo& info) {
v8::HeapStatistics heap_statistics;
v8::Isolate::GetCurrent()->GetHeapStatistics(&heap_statistics);
+ const double scale_factor = 1.0 + base::RandInt(-300, 300) / 10000.0;
info.used_js_heap_size =
- heap_statistics.used_heap_size() + heap_statistics.external_memory();
+ (heap_statistics.used_heap_size() + heap_statistics.external_memory()) * scale_factor;
info.total_js_heap_size =
- heap_statistics.total_physical_size() + heap_statistics.external_memory();
- info.js_heap_size_limit = heap_statistics.heap_size_limit();
+ (heap_statistics.total_physical_size() + heap_statistics.external_memory()) * scale_factor;
+ info.js_heap_size_limit = heap_size_limit;
}
class HeapSizeCache {
diff --git a/third_party/blink/renderer/core/timing/window_performance.cc b/third_party/blink/renderer/core/timing/window_performance.cc
--- a/third_party/blink/renderer/core/timing/window_performance.cc
+++ b/third_party/blink/renderer/core/timing/window_performance.cc
@@ -316,7 +316,7 @@ MemoryInfo* WindowPerformance::memory(ScriptState* script_state) const {
const bool is_locked_to_site = Platform::Current()->IsLockedToSite();
auto* memory_info = MakeGarbageCollected<MemoryInfo>(
is_locked_to_site ? MemoryInfo::Precision::kPrecise
- : MemoryInfo::Precision::kBucketized);
+ : MemoryInfo::Precision::kPrecise);
// Record Web Memory UKM.
const uint64_t kBytesInKB = 1024;
auto* execution_context = ExecutionContext::From(script_state);
--