V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
anytk
V2EX  ›  Linux

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

  •  
  •   anytk · 108 天前 · 1678 次点击
    这是一个创建于 108 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    • PREEMPT_NONE: 无抢占模式,这种模式适用于 CPU 密集型任务,可以最大化吞吐量。

    • PREEMPT_VOLUNTARY: 默认模式。内核线程在某些特定的程序点点上可能会被抢占。相比 PREEMPT_NONE ,它提供了一定的低延迟,但不会像 PREEMPT 模式那样频繁地导致上下文切换。

    • PREEMPT_FULL: 这个模式下,内核是完全抢占的。当一个更高优先级的任务准备好运行时,当前运行的内核线程可能会被立即抢占。这个模式适合对实时性有较高要求的应用程序。

    一般来说,对服务器使用而言,重要的是吞吐量,但对于桌面应而言,延迟对于使用者更为敏感,尤其是多媒体音视频游戏使用。对于桌面使用推荐激活 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/

    5 条回复    2024-09-07 15:01:49 +08:00
    ProPh3t
        1
    ProPh3t  
       106 天前
    锦上添花:打游戏把 gamemode 开起来,录音把 cpupower-gui 设成 perfomance 。
    xxb
        2
    xxb  
       97 天前
    cpu 密集型 挖矿有帮助不?
    anytk
        3
    anytk  
    OP
       95 天前
    @xxb 无,这个设置会增加内核进程/线程切换,尽可能让内核线程/进程公平竞争 CPU 资源,来保证一些低优先级/低竞争性的线程及时得到 CPU 时间片。最终呈现是系统整体吞吐量会有一些下降,但整体系统的体验延迟会有改善。
    qbqbqbqb
        4
    qbqbqbqb  
       90 天前
    看了一下我用的发行版默认就是 full
    qbqbqbqb
        5
    qbqbqbqb  
       90 天前
    补充一下,如果内核使用了 PREEMPT_DYNAMIC ,不仅可以通过内核参数开机的时候选择抢占模式,运行时也是可以随时更改的,看当前模式用下面的命令(需要 root )
    cat /sys/kernel/debug/sched/preempt
    修改的命令类似这样(先切换到 root shell ,不要直接 sudo ,shell I/O 重定向会有权限问题)
    echo full > /sys/kernel/debug/sched/preempt
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2839 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 13:33 · PVG 21:33 · LAX 05:33 · JFK 08:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.