Linux 桌面使用推荐打开 preempt=full

31 天前
 anytk

Linux Kernel 5.12 后支持 PREEMPT_DYNAMIC,与 realtime 版本需要修改 Kernel 代码不同,它允许在运行时切换内核的抢占模式,而不需要重新编译内核。目前支持的模式有:

一般来说,对服务器使用而言,重要的是吞吐量,但对于桌面应而言,延迟对于使用者更为敏感,尤其是多媒体音视频游戏使用。对于桌面使用推荐激活 full 模式。

如果当前内核编译时使用 PREEMPT_DYNAMIC(可以通过 uname -a 命令检查) ,则可以通过以下方式激活 full 模式:

通过修改 grub 引导内核参数,添加 preempt=full 来激活 full 模式

# 编辑 grub 配置文件
sudo vim /etc/default/grub

# 找到如下行,加入 preempt=full 内核参数
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
# 修改为
GRUB_CMDLINE_LINUX_DEFAULT="quiet preempt=full"

# 更新 grub
sudo update-grub

reddit 上有一些讨论可供参考: https://www.reddit.com/r/Fedora/comments/158fy6x/ive_turned_preemptfull_on_and_it_solved_most_of/

1446 次点击
所在节点    Linux
5 条回复
ProPh3t
29 天前
锦上添花:打游戏把 gamemode 开起来,录音把 cpupower-gui 设成 perfomance 。
xxb
21 天前
cpu 密集型 挖矿有帮助不?
anytk
19 天前
@xxb 无,这个设置会增加内核进程/线程切换,尽可能让内核线程/进程公平竞争 CPU 资源,来保证一些低优先级/低竞争性的线程及时得到 CPU 时间片。最终呈现是系统整体吞吐量会有一些下降,但整体系统的体验延迟会有改善。
qbqbqbqb
13 天前
看了一下我用的发行版默认就是 full
qbqbqbqb
13 天前
补充一下,如果内核使用了 PREEMPT_DYNAMIC ,不仅可以通过内核参数开机的时候选择抢占模式,运行时也是可以随时更改的,看当前模式用下面的命令(需要 root )
cat /sys/kernel/debug/sched/preempt
修改的命令类似这样(先切换到 root shell ,不要直接 sudo ,shell I/O 重定向会有权限问题)
echo full > /sys/kernel/debug/sched/preempt

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1066445

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX