chrt命令:设置/操纵Linux进程的实时属性

时间:2020-01-09 10:40:42  来源:igfitidea点击:

问题描述:如何使用Shell提示符设置Linux操作系统下进程的实时调度优先级?

解决方法:您可以使用chrt命令来设置或检索现有PID的实时调度属性/调度优先级。
您也可以使用给定的属性运行COMMAND。

了解Linux调度优先级

从手册页:调度程序是内核部分,它决定接下来将由CPU执行哪个可运行进程。

Linux调度程序提供了三种不同的调度策略,一种用于常规进程,另一种用于实时应用程序。

  • SCHED_OTHER`大多数进程使用的默认通用分时调度程序策略。
  • " SCHED_FIFO"或" SCHED_RR"适用于对时间要求严格的特殊应用,这些应用需要对选择可运行进程的执行方式进行精确控制
  • SCHED_BATCH用于处理批处理

警告!这些示例需要对UNIX/Linux调度算法有适当的了解。
不要在生产系统上尝试;如果您不熟悉Linux调度算法。

调度算法

  • SCHED_FIFO使用先进先出调度算法
  • SCHED_RR使用循环调度算法
  • SCHED_OTHER使用默认Linux分时调度算法
  • SCHED_BATCH使用计划批处理算法

"警告!"标准Linux内核用作通用操作系统,可以处理后台进程,交互式应用程序和软实时应用程序(通常需要满足时间期限的应用程序)。

chrt命令针对此类应用程序。

util-linux软件包

chrt命令是util-linux package底层系统实用程序的一部分,对于Linux系统运行是必需的。
默认情况下,它安装在Debian/Ubuntu/CentOS/RHEL/Fedora和几乎所有其他Linux发行版中。

如何使用chrt命令获取Linux进程的实时属性?

要获取/检索现有任务/PID的实时属性,请执行:

# chrt -p pid
# chrt -p 112
# chrt -p 1

输出:

pid 1's current scheduling policy: SCHED_OTHER
pid 1's current scheduling priority: 0

任何用户都可以检索调度信息。
无需特殊特权。

如何使用chrt命令设置Linux进程(已运行的进程)的实时属性?

使用以下语法来设置新的优先级:

# chrt -p prio pid
# chrt -p 1025
# chrt -p 55 1025
# chrt -p 1025

在设置新的调度策略之前,您需要找出每种调度算法的最小和最大有效优先级,执行:

# chrt -m

输出:

SCHED_OTHER min/max priority    : 0/0
SCHED_FIFO min/max priority     : 1/99
SCHED_RR min/max priority       : 1/99
SCHED_BATCH min/max priority    : 0/0

如何设置SCHED_BATCH调度策略?

要将调度策略设置为SCHED_BATCH,请执行:

# chrt -b -p 0 {pid}
# chrt -b -p 0 1024

如何设置SCHED_FIFO调度策略?

要将调度策略设置为SCHED_FIFO,请执行:

# chrt -f -p [1..99] {pid}

将策略设置为SCHED_FIFO,优先级为50:

# chrt -f -p 50 1024
# chrt -p 1024

如何设置SCHED_OTHER调度策略?

要将策略调度策略设置为SCHED_OTHER,请执行:

# chrt -o -p 0 {pid}
# chrt -o -p 0 1024
# chrt -p 1024

如何设置SCHED_RR调度策略?

要将调度策略设置为SCHED_RR,请执行:

# chrt -r -p [1..99] {pid}

将策略设置为SCHED_RR调度,优先级为20:

# chrt -r -p 20 1024
# chrt -p 1024