搜索

30.7. 在引导过程中更改服务优先级

download PDF

使用 systemd 服务时,可以在引导过程中为启动的服务设置实时优先级。单元配置指令 用于在引导过程中更改服务的优先级。

引导过程优先级更改通过使用 service 部分中的以下指令进行:

CPUSchedulingPolicy=
设置已执行进程的 CPU 调度策略。它被用于设置 other, fifo, 和 rr 策略。
CPUSchedulingPriority=
设置已执行进程的 CPU 调度优先级。可用的优先级范围取决于所选的 CPU 调度策略。对于实时调度策略,可以使用 1(最低优先级)和 99 (最高优先级)之间的整数。

下面的步骤描述了如何使用 mcelog 服务在引导过程中更改服务的优先级。

先决条件

  1. 安装 TuneD 软件包:

    # dnf install tuned
  2. 启用并启动 TuneD 服务:

    # systemctl enable --now tuned

流程

  1. 查看正在运行的线程的调度优先级:

    # tuna --show_threads
                          thread       ctxt_switches
        pid SCHED_ rtpri affinity voluntary nonvoluntary             cmd
      1      OTHER     0     0xff      3181          292         systemd
      2      OTHER     0     0xff       254            0        kthreadd
      3      OTHER     0     0xff         2            0          rcu_gp
      4      OTHER     0     0xff         2            0      rcu_par_gp
      6      OTHER     0        0         9            0 kworker/0:0H-kblockd
      7      OTHER     0     0xff      1301            1 kworker/u16:0-events_unbound
      8      OTHER     0     0xff         2            0    mm_percpu_wq
      9      OTHER     0        0       266            0     ksoftirqd/0
    [...]
  2. 创建附加 mcelog 服务配置文件,并在该文件中插入策略名称和优先级:

    # cat << EOF > /etc/systemd/system/mcelog.service.d/priority.conf
    
    [Service]
    CPUSchedulingPolicy=fifo
    CPUSchedulingPriority=20
    EOF
  3. 重新载入 systemd 脚本配置:

    # systemctl daemon-reload
  4. 重启 mcelog 服务:

    # systemctl restart mcelog

验证

  • 显示 systemd 问题设置的 mcelog 优先级:

    # tuna -t mcelog -P
    thread       ctxt_switches
      pid SCHED_ rtpri affinity voluntary nonvoluntary             cmd
    826     FIFO    20  0,1,2,3        13            0          mcelog

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.