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