From 7381c24eb29a9292141f8419ce8bf074755204b4 Mon Sep 17 00:00:00 2001 From: zhangkun Date: Mon, 25 May 2026 16:11:36 +0800 Subject: [PATCH] feat(systemd): add THP disable pre-start for DDE services MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Added ExecStartPre directive to disable Transparent Huge Pages (THP) before DDE core services start 2. Applied to 5 services: dde-shell desktop plugin, dde-shell DDE, dde-lock, dde-polkit-agent, and dde-session@x11 3. Uses `-` prefix on dde-thp-disable to gracefully handle cases where the binary is absent Log: Disable THP before DDE session services start to reduce memory overhead feat(systemd): 为 DDE 服务添加 THP 禁用预启动步骤 1. 在 DDE 核心服务启动前添加 ExecStartPre 指令,用于禁用透明大页(THP) 2. 覆盖 5 个服务:dde-shell 桌面插件、dde-shell DDE、dde-lock、dde-polkit-agent、dde-session@x11 3. 对 dde-thp-disable 使用 `-` 前缀,避免二进制文件缺失时启动失败 Log: 在 DDE 会话服务启动前禁用 THP 以减少内存开销 PMS: TASK-390043 --- .../dde-shell-plugin@org.deepin.ds.desktop.service | 1 + systemd/dde-session-core.target.wants/dde-shell@DDE.service | 1 + systemd/dde-session-initialized.target.wants/dde-lock.service | 1 + .../dde-polkit-agent.service | 1 + systemd/dde-session-pre.target.wants/dde-session@x11.service | 1 + 5 files changed, 5 insertions(+) diff --git a/systemd/dde-session-core.target.wants/dde-shell-plugin@org.deepin.ds.desktop.service b/systemd/dde-session-core.target.wants/dde-shell-plugin@org.deepin.ds.desktop.service index 4452fdb..d10ee93 100644 --- a/systemd/dde-session-core.target.wants/dde-shell-plugin@org.deepin.ds.desktop.service +++ b/systemd/dde-session-core.target.wants/dde-shell-plugin@org.deepin.ds.desktop.service @@ -18,6 +18,7 @@ After=dbus.socket Type=dbus BusName=com.deepin.dde.desktop ExecStart=/usr/bin/dde-shell -p %I +ExecStartPre=-/usr/libexec/dde-thp-disable TimeoutStartSec=infinity Slice=session.slice Restart=always diff --git a/systemd/dde-session-core.target.wants/dde-shell@DDE.service b/systemd/dde-session-core.target.wants/dde-shell@DDE.service index 82e64c4..d68d7b0 100644 --- a/systemd/dde-session-core.target.wants/dde-shell@DDE.service +++ b/systemd/dde-session-core.target.wants/dde-shell@DDE.service @@ -21,6 +21,7 @@ Wants=org.desktopspec.ApplicationManager1.service Type=dbus BusName=org.deepin.dde.Dock1 ExecStart=/usr/bin/dde-shell -C %I --serviceName=org.deepin.dde.shell -d org.deepin.ds.desktop +ExecStartPre=-/usr/libexec/dde-thp-disable TimeoutStartSec=infinity Slice=session.slice Restart=always diff --git a/systemd/dde-session-initialized.target.wants/dde-lock.service b/systemd/dde-session-initialized.target.wants/dde-lock.service index a582a15..924d9e2 100644 --- a/systemd/dde-session-initialized.target.wants/dde-lock.service +++ b/systemd/dde-session-initialized.target.wants/dde-lock.service @@ -18,6 +18,7 @@ After=org.dde.session.Daemon1.service Type=simple ExecCondition=/bin/sh -c 'test "$XDG_SESSION_TYPE" != "wayland" || exit 2' ExecStart=/usr/bin/dde-lock +ExecStartPre=-/usr/libexec/dde-thp-disable TimeoutStartSec=infinity Slice=session.slice Restart=on-failure diff --git a/systemd/dde-session-initialized.target.wants/dde-polkit-agent.service b/systemd/dde-session-initialized.target.wants/dde-polkit-agent.service index 60d8e86..1e33864 100644 --- a/systemd/dde-session-initialized.target.wants/dde-polkit-agent.service +++ b/systemd/dde-session-initialized.target.wants/dde-polkit-agent.service @@ -14,6 +14,7 @@ Before=dde-session-initialized.target [Service] Type=simple ExecStart=/usr/lib/polkit-1-dde/dde-polkit-agent +ExecStartPre=-/usr/libexec/dde-thp-disable TimeoutStartSec=infinity Slice=session.slice Restart=on-failure diff --git a/systemd/dde-session-pre.target.wants/dde-session@x11.service b/systemd/dde-session-pre.target.wants/dde-session@x11.service index 5ff802a..77d87a4 100644 --- a/systemd/dde-session-pre.target.wants/dde-session@x11.service +++ b/systemd/dde-session-pre.target.wants/dde-session@x11.service @@ -14,6 +14,7 @@ StartLimitBurst=3 [Service] Slice=session.slice Type=notify +ExecStartPre=-/usr/libexec/dde-thp-disable ExecStartPre=-/bin/sh -c 'cp -n /etc/xdg/kglobalshortcutsrc "$HOME/.config/kglobalshortcutsrc"; sed -i "s/deepin-kwin/kwin/g" "$HOME/.config/kglobalshortcutsrc"' ExecStart=/usr/bin/kwin_x11 --replace # Exit code 1 means we are probably *not* dealing with an extension failure