跳过导航链接 | |
退出打印视图 | |
系统管理指南:高级管理 Oracle Solaris 10 1/13 Information Library (简体中文) |
以下列表列出了可在系统中配置的进程调度类。其中还包括分时类的用户优先级范围。
可能的进程调度类如下所示:
公平份额 (FSS)
固定 (FX)
系统 (SYS)
交互 (IA)
实时 (RT)
进程的调度优先级是进程调度程序根据调度策略指定的优先级。dispadmin 命令可以列出缺省调度策略。有关更多信息,请参见 dispadmin(1M) 手册页。
可以使用 priocntl 命令将进程指定给优先级类并管理进程优先级。有关使用 priocntl 命令管理进程的说明,请参见如何指定进程优先级 (priocntl)。
示例 12-5 显示有关进程类的基本信息 (priocntl)
# priocntl -l CONFIGURED CLASSES ================== SYS (System Class) TS (Time Sharing) Configured TS User Priority Range: -60 through 60 FX (Fixed priority) Configured FX User Priority Range: 0 through 60 IA (Interactive) Configured IA User Priority Range: -60 through 60
示例 12-6 显示进程的全局优先级
以下示例显示 ps -ecl 命令的输出。PRI 列中的值显示,pageout 进程的优先级最高,而 sh 进程的优先级最低。
$ ps -ecl F S UID PID PPID CLS PRI ADDR SZ WCHAN TTY TIME COMD 19 T 0 0 0 SYS 96 f00d05a8 0 ? 0:03 sched 8 S 0 1 0 TS 50 ff0f4678 185 ff0f4848 ? 36:51 init 19 S 0 2 0 SYS 98 ff0f4018 0 f00c645c ? 0:01 pageout 19 S 0 3 0 SYS 60 ff0f5998 0 f00d0c68 ? 241:01 fsflush 8 S 0 269 1 TS 58 ff0f5338 303 ff49837e ? 0:07 sac 8 S 0 204 1 TS 43 ff2f6008 50 ff2f606e console 0:02 sh
角色包含授权和具有特权的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的"配置 RBAC(任务列表)"。
# priocntl -e -c class -m user-limit -p pri command-name
执行该命令。
指定要在其中运行进程的类。有效类包括 TS(timesharing,分时)、RT(real time,实时)、IA(interactive,交互)、FSS(fair share,公平份额)和 FX(fixed priority,固定优先级)。
使用 -p 选项时,可以指定可将优先级提高或降低的最大量。
允许您为实时线程指定在 RT 类中的相对优先级。对于分时进程而言,使用 -p 选项可以指定用户提供的优先级,该优先级范围是 -60 到 +60。
# ps -ecl | grep command-name
示例 12-7 指定进程优先级 (priocntl)
以下示例显示如何以用户提供的最高优先级启动 find 命令。
# priocntl -e -c TS -m 60 -p 60 find . -name core -print # ps -ecl | grep find
角色包含授权和具有特权的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的"配置 RBAC(任务列表)"。
# priocntl -s -m user-limit [-p user-priority] -i idtype idlist
允许设置用户优先级范围的上限并更改当前优先级。
使用 -p 选项时,可以指定可将优先级提高或降低的最大量。
允许指定优先级。
结合使用 xidtype 和 xidlist 可以标识一个或多个进程。xidtype 指定 ID 的类型,例如进程 ID 或用户 ID。使用 xidlist 可以标识进程 ID 或用户 ID 的列表。
# ps -ecl | grep idlist
示例 12-8 更改分时进程的调度参数 (priocntl)
以下示例显示如何以 500 毫秒的时间分片、RT 类中的优先级 20 以及全局优先级 120 来执行命令。
# priocntl -e -c RT -m 500 -p 20 myprog # ps -ecl | grep myprog
# priocntl -s -c class -i idtype idlist
允许设置用户优先级范围的上限并更改当前优先级。
指定进程所要改用的类,分时则指定 TS,实时则指定 RT。
结合使用 xidtype 和 xidlist 可以标识一个或多个进程。xidtype 指定 ID 的类型,例如进程 ID 或用户 ID。使用 xidlist 可以标识进程 ID 或用户 ID 的列表。
注 - 只有超级用户或在实时 Shell 中工作的用户才能将某一进程更改为实时进程或将实时进程更改为该进程。如果超级用户将用户进程更改为实时类,那么该用户以后不能使用 priocntl -s 命令来更改实时调度参数。
# ps -ecl | grep idlist
示例 12-9 更改进程的类 (priocntl)
以下示例显示如何将属于用户 15249 的所有进程都更改为实时进程。
# priocntl -s -c RT -i uid 15249 # ps -ecl | grep 15249
支持 nice 命令的目的只是为了向下兼容以前的 Solaris 发行版。priocntl 命令在管理进程方面提供了更多的灵活性。
进程的优先级由其调度类的策略和 nice 数值决定。每个分时进程都有全局优先级。全局优先级的计算方法是用户提供的优先级(该优先级可能受 nice 或 priocntl 命令影响)加上系统计算的优先级。
进程的执行优先级数由操作系统指定。优先级数由多个因素决定,其中包括进程的调度类、进程使用的 CPU 时间以及进程的 nice 数值(对于分时进程的情况)。
每个分时进程都以缺省 nice 数值启动,它从父进程中继承该数值。nice 数值显示在 ps 报告的 NI 列中。
用户可通过提高用户提供的优先级来降低进程的优先级。但是,只有超级用户能够通过降低 nice 数值来提高进程的优先级。此限制使用户无法提高自己所拥有进程的优先级,因此会独占更大的 CPU 份额。
nice 数值的范围是从 0 到 +39,其中 0 表示最高优先级。每个分时进程的缺省 nice 值为 20。有两个可用的命令版本:标准版本 /usr/bin/nice 以及 C shell 内置命令。
通过使用此过程,用户可以降低进程的优先级。而超级用户可以提高或降低进程的优先级。
以下 nice 命令使 nice 数值增大 5 个单位,从而以更低的优先级执行 command-name。
$ /usr/bin/nice -5 command-name
在前面的命令中,减号指定后面的内容是一个选项。也可以通过以下方式来指定此命令:
% /usr/bin/nice -n 5 command-name
以下 nice 命令使 nice 数值增大 10 个单位(缺省增量)但未超出最大值 39,从而降低了 command-name 的优先级。
% /usr/bin/nice command-name
以下 nice 命令使 nice 数值降低 10 个单位但不低于最小值 0,从而提高了 command-name 的优先级。
# /usr/bin/nice --10 command-name
在前面的命令中,第一个减号指定后面的内容是一个选项。第二个减号指示一个负数。
以下 nice 命令使 nice 数值增大 5 个单位但未超出最大值 39,从而降低了 command-name 的优先级。
# /usr/bin/nice -5 command-name
另请参见
有关更多信息,请参见 nice(1) 手册页。