Skip to content

Commit bdb3a66

Browse files
authored
feat: Enable pressure monitor in linux and for render process OS-20368 (#110)
memory_pressure: Enable pressure monitor in linux and for render process OS-20368 Signed-off-by: Tariq Bashir <[email protected]>
1 parent 34f318e commit bdb3a66

2 files changed

Lines changed: 82 additions & 0 deletions

File tree

patches/chromium/.patches

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,4 +195,5 @@ add_switch_to_disable_font_matching_cache_os-14352.patch
195195
fix_overlay_strategy_for_html_pages_with_transparency_os-19250.patch
196196
feat_nexus-window_implement_setopacity_support_for_nexus_platform.patch
197197
ozone_nexus_implement_setfullscreen_for_nexuswindow_os-19899.patch
198+
enable_memory_pressure_monitoring_and_enable_for_renderer_process.patch
198199
fix_wayland_window_call_setwindowgeometry_for_position_updates.patch
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
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

Comments
 (0)