From bf5c2c801210891ee4cf7b448fe41b082bed0eaf Mon Sep 17 00:00:00 2001
From: Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>
Date: Fri, 15 Dec 2023 19:27:07 +0100
Subject: [PATCH] defaults: Configure multi-gen LRU thrashing prevention

See https://www.kernel.org/doc/html/next/admin-guide/mm/multigen_lru.html

> Based on the average human detectable lag (~100ms), N=1000 usually eliminates
> intolerable janks due to thrashing. Larger values like N=3000 make janks less
> noticeable at the risk of premature OOM kills.
---
 debian/librem5-base-defaults.librem5-mglru.service | 13 +++++++++++++
 debian/rules                                       |  1 +
 2 files changed, 14 insertions(+)
 create mode 100644 debian/librem5-base-defaults.librem5-mglru.service

diff --git a/debian/librem5-base-defaults.librem5-mglru.service b/debian/librem5-base-defaults.librem5-mglru.service
new file mode 100644
index 0000000..254d3a8
--- /dev/null
+++ b/debian/librem5-base-defaults.librem5-mglru.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Configure multi-gen LRU thrashing prevention
+Documentation=https://www.kernel.org/doc/html/next/admin-guide/mm/multigen_lru.html
+ConditionPathExists=/sys/kernel/mm/lru_gen/min_ttl_ms
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=/bin/sh -c 'echo 1000 > /sys/kernel/mm/lru_gen/min_ttl_ms'
+ExecStop=/bin/sh -c 'echo 0 > /sys/kernel/mm/lru_gen/min_ttl_ms'
+
+[Install]
+WantedBy=basic.target
diff --git a/debian/rules b/debian/rules
index b0a09a3..15b750a 100755
--- a/debian/rules
+++ b/debian/rules
@@ -18,6 +18,7 @@ override_dh_installsystemd:
 	dh_installsystemd --no-start --name=usb_gadget
 	dh_installsystemd --no-start --name=bluetooth-brcmfmac
 	dh_installsystemd --no-start --name=librem5-lockdown-support
+	dh_installsystemd --no-start --name=librem5-mglru
 
 override_dh_installsystemduser:
 	dh_installsystemduser --name=mpris-proxy
-- 
GitLab