35.3. 实时调度程序优先级

systemd 命令可用于为在引导过程中启动的服务设置实时优先级。这是在 引导 期间更改服务优先级 所述。

在该流程给出的示例中,可能会为一些内核线程获得非常高的优先级。这允许默认优先级与 Java(RTSJ)的实时时间规格的要求进行 良好的集成。RTSJ 需要一系列优先级从 10 到 89。

对于 RTSJ 没有被使用的部署,应用程序可使用大量调度优先级在 90 下。在调度优先级中的任何应用程序线程 49 时需要特别小心,因为它可以防止重要的系统服务运行,因为它可能会阻止重要系统服务运行。这可能导致无法预计的行为,包括阻止网络流量、阻止虚拟内存分页,以及因为文件系统日志被阻断而导致数据崩溃。

如果调度了任何应用程序线程的优先级 89,请确保线程只运行非常短的代码路径。如果不这样做,则 RHEL for Real Time 内核的低延迟功能会降低。

为非特权用户设置实时优先级

默认情况下,只有 root 用户可以更改优先级和调度信息。要授予非特权用户能够调整这些设置,最好的方法是将非特权用户添加到 realtime 组中。

重要

您还可以通过编辑 /etc/security/limits.conf 文件来更改用户特权。但是,这可能导致重复操作并导致常规用户的系统无法使用。如果您决定编辑此文件,请谨慎操作,并在进行更改前始终创建副本。