|
| 1 | +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 |
| 2 | +From: Tariq Bashir < [email protected]> |
| 3 | +Date: Tue, 2 Dec 2025 16:01:17 +0000 |
| 4 | +Subject: Enable memory pressure monitoring and enable for renderer process |
| 5 | + OS-20368 |
| 6 | + |
| 7 | +Chromium has disabled memory pressure monitoring for Linux by default |
| 8 | +(https://chromium-review.googlesource.com/c/chromium/src/+/2792266). This patch |
| 9 | +re-enables it and also cherry picks the QtWebEngine patch that enables memory pressure |
| 10 | +monitoring for the Linux renderer processes from: |
| 11 | +https://cam-gerrit.brightsign.info/c/qtwebengine-chromium/+/15831 |
| 12 | + |
| 13 | +diff --git a/components/memory_pressure/system_memory_pressure_evaluator.cc b/components/memory_pressure/system_memory_pressure_evaluator.cc |
| 14 | +index 3299c7fab7899d8d18e590addb66a4cd1900adfe..3a74620122bb2bc4491c3b85b143b5a21ec0172d 100644 |
| 15 | +--- a/components/memory_pressure/system_memory_pressure_evaluator.cc |
| 16 | ++++ b/components/memory_pressure/system_memory_pressure_evaluator.cc |
| 17 | +@@ -17,6 +17,8 @@ |
| 18 | + #include "components/memory_pressure/system_memory_pressure_evaluator_mac.h" |
| 19 | + #elif BUILDFLAG(IS_WIN) |
| 20 | + #include "components/memory_pressure/system_memory_pressure_evaluator_win.h" |
| 21 | ++#elif BUILDFLAG(IS_LINUX) |
| 22 | ++#include "components/memory_pressure/system_memory_pressure_evaluator_linux.h" |
| 23 | + #endif |
| 24 | + |
| 25 | + namespace memory_pressure { |
| 26 | +@@ -51,6 +53,9 @@ SystemMemoryPressureEvaluator::CreateDefaultSystemEvaluator( |
| 27 | + evaluator->CreateOSSignalPressureEvaluator(monitor->CreateVoter()); |
| 28 | + } |
| 29 | + return evaluator; |
| 30 | ++#elif BUILDFLAG(IS_LINUX) |
| 31 | ++ return std::make_unique<memory_pressure::os_linux::SystemMemoryPressureEvaluator>( |
| 32 | ++ monitor->CreateVoter()); |
| 33 | + #else |
| 34 | + // Chrome OS and Chromecast evaluators are created in separate components. |
| 35 | + return nullptr; |
| 36 | +diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc |
| 37 | +index 7b4fb3da23f4e7805f74932cd959229554c3e217..c65b533af1f980bcb2c17d9df5196255b30165ed 100644 |
| 38 | +--- a/content/renderer/render_thread_impl.cc |
| 39 | ++++ b/content/renderer/render_thread_impl.cc |
| 40 | +@@ -63,6 +63,7 @@ |
| 41 | + #include "cc/trees/raster_context_provider_wrapper.h" |
| 42 | + #include "cc/trees/ukm_manager.h" |
| 43 | + #include "components/discardable_memory/client/client_discardable_shared_memory_manager.h" |
| 44 | ++#include "components/memory_pressure/multi_source_memory_pressure_monitor.h" |
| 45 | + #include "components/metrics/public/mojom/single_sample_metrics.mojom.h" |
| 46 | + #include "components/metrics/single_sample_metrics.h" |
| 47 | + #include "components/viz/common/features.h" |
| 48 | +@@ -634,6 +635,9 @@ void RenderThreadImpl::Init() { |
| 49 | + // been initialized by the Zygote before this instance became a Renderer. |
| 50 | + media::InitializeMediaLibrary(); |
| 51 | + |
| 52 | ++ memory_pressure_monitor_ = std::make_unique<memory_pressure::MultiSourceMemoryPressureMonitor>(); |
| 53 | ++ memory_pressure_monitor_->MaybeStartPlatformVoter(); |
| 54 | ++ |
| 55 | + memory_pressure_listener_ = std::make_unique<base::MemoryPressureListener>( |
| 56 | + FROM_HERE, |
| 57 | + base::BindRepeating(&RenderThreadImpl::OnMemoryPressure, |
| 58 | +diff --git a/content/renderer/render_thread_impl.h b/content/renderer/render_thread_impl.h |
| 59 | +index 351210e73bde2da89645ad6c09e5c4820d2321b5..8d6f914ac2d499b78187b3c9216a50c02cf66034 100644 |
| 60 | +--- a/content/renderer/render_thread_impl.h |
| 61 | ++++ b/content/renderer/render_thread_impl.h |
| 62 | +@@ -86,6 +86,10 @@ namespace media { |
| 63 | + class GpuVideoAcceleratorFactories; |
| 64 | + } |
| 65 | + |
| 66 | ++namespace memory_pressure { |
| 67 | ++class MultiSourceMemoryPressureMonitor; |
| 68 | ++} |
| 69 | ++ |
| 70 | + namespace mojo { |
| 71 | + class BinderMap; |
| 72 | + } |
| 73 | +@@ -543,6 +547,8 @@ class CONTENT_EXPORT RenderThreadImpl |
| 74 | + |
| 75 | + HistogramCustomizer histogram_customizer_; |
| 76 | + |
| 77 | ++ std::unique_ptr<memory_pressure::MultiSourceMemoryPressureMonitor> memory_pressure_monitor_; |
| 78 | ++ |
| 79 | + std::unique_ptr<base::MemoryPressureListener> memory_pressure_listener_; |
| 80 | + |
| 81 | + std::unique_ptr<viz::Gpu> gpu_; |
0 commit comments