JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
マニュアルページセクション 1: ユーザーコマンド     Oracle Solaris 11 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

紹介

ユーザーコマンド

acctcom(1)

adb(1)

addbib(1)

admin(1)

alias(1)

allocate(1)

amt(1)

appcert(1)

apptrace(1)

apropos(1)

ar(1)

arch(1)

as(1)

asa(1)

at(1)

atq(1)

atrm(1)

audioconvert(1)

audioctl(1)

audioplay(1)

audiorecord(1)

audiotest(1)

auths(1)

auto_ef(1)

awk(1)

banner(1)

basename(1)

basename(1B)

batch(1)

bc(1)

bdiff(1)

bfs(1)

bg(1)

biff(1B)

break(1)

builtin(1)

cal(1)

calendar(1)

case(1)

cat(1)

cd(1)

cdc(1)

cdrw(1)

chdir(1)

checkeq(1)

checknr(1)

chgrp(1)

chkey(1)

chmod(1)

chown(1)

chown(1B)

ckdate(1)

ckgid(1)

ckint(1)

ckitem(1)

ckkeywd(1)

ckpath(1)

ckrange(1)

ckstr(1)

cksum(1)

cktime(1)

ckuid(1)

ckyorn(1)

clear(1)

cmp(1)

col(1)

comb(1)

comm(1)

command(1)

compress(1)

continue(1)

cp(1)

cpio(1)

cpp(1)

cputrack(1)

crle(1)

crontab(1)

csh(1)

csplit(1)

ct(1C)

ctags(1)

ctrun(1)

ctstat(1)

ctwatch(1)

cu(1C)

cut(1)

date(1)

dc(1)

deallocate(1)

decrypt(1)

delta(1)

deroff(1)

df(1B)

dhcpinfo(1)

diff(1)

diff3(1)

diffmk(1)

digest(1)

digestp(1)

dircmp(1)

dirname(1)

dirs(1)

dis(1)

disown(1)

dispgid(1)

dispuid(1)

dos2unix(1)

dpost(1)

du(1)

du(1B)

dump(1)

dumpcs(1)

dumpkeys(1)

echo(1)

echo(1B)

ed(1)

edit(1)

egrep(1)

eject(1)

elfdump(1)

elfedit(1)

elffile(1)

elfsign(1)

elfwrap(1)

encrypt(1)

enhance(1)

env(1)

eqn(1)

errange(1)

errdate(1)

errgid(1)

errint(1)

erritem(1)

error(1)

errpath(1)

errstr(1)

errtime(1)

erruid(1)

erryorn(1)

eval(1)

ex(1)

exec(1)

exit(1)

expand(1)

export(1)

exportfs(1B)

expr(1)

expr(1B)

exstr(1)

factor(1)

false(1)

fastboot(1B)

fasthalt(1B)

fc(1)

fg(1)

fgrep(1)

file(1)

file(1B)

filebench(1)

filep(1)

filesync(1)

filofaxp(1)

find(1)

finger(1)

fmt(1)

fmtmsg(1)

fold(1)

for(1)

foreach(1)

franklinp(1)

from(1B)

ftp(1)

function(1)

gcore(1)

gencat(1)

geniconvtbl(1)

genmsg(1)

get(1)

getconf(1)

getfacl(1)

getlabel(1)

getopt(1)

getoptcvt(1)

getopts(1)

gettext(1)

gettxt(1)

getzonepath(1)

glob(1)

goto(1)

gprof(1)

grep(1)

groups(1)

groups(1B)

grpck(1B)

hash(1)

hashcheck(1)

hashmake(1)

hashstat(1)

head(1)

helpdate(1)

helpgid(1)

helpint(1)

helpitem(1)

helppath(1)

helprange(1)

helpstr(1)

helptime(1)

helpuid(1)

helpyorn(1)

hist(1)

history(1)

hostid(1)

hostname(1)

i386(1)

i486(1)

iconv(1)

idnconv(1)

if(1)

indxbib(1)

install(1B)

ipcrm(1)

ipcs(1)

isainfo(1)

isalist(1)

jobs(1)

join(1)

jsh(1)

kbd(1)

kdestroy(1)

keylogin(1)

keylogout(1)

kill(1)

kinit(1)

klist(1)

kmdb(1)

kmfcfg(1)

kpasswd(1)

krb5-config(1)

ksh(1)

ksh88(1)

ksh93(1)

ktutil(1)

lari(1)

last(1)

lastcomm(1)

ld(1)

ldapadd(1)

ldapdelete(1)

ldaplist(1)

ldapmodify(1)

ldapmodrdn(1)

ldapsearch(1)

ldd(1)

ld.so.1(1)

let(1)

lex(1)

lgrpinfo(1)

limit(1)

line(1)

list_devices(1)

listusers(1)

llc2_autoconfig(1)

llc2_config(1)

llc2_stats(1)

ln(1)

ln(1B)

loadkeys(1)

locale(1)

localedef(1)

logger(1)

logger(1B)

login(1)

logname(1)

logout(1)

look(1)

lookbib(1)

lorder(1)

ls(1)

ls(1B)

m4(1)

mac(1)

mach(1)

machid(1)

madv.so.1(1)

mail(1)

Mail(1B)

mail(1B)

mailcompat(1)

mailp(1)

mailq(1)

mailstats(1)

mailx(1)

make(1S)

makekey(1)

man(1)

mconnect(1)

mcs(1)

mdb(1)

mesg(1)

mkdir(1)

mkmsgs(1)

mkstr(1B)

mktemp(1)

moe(1)

more(1)

mp(1)

mpss.so.1(1)

msgcc(1)

msgcpp(1)

msgcvt(1)

msgfmt(1)

msggen(1)

msgget(1)

mt(1)

mv(1)

nawk(1)

nc(1)

ncab2clf(1)

ncakmod(1)

neqn(1)

netcat(1)

newform(1)

newgrp(1)

newsp(1)

newtask(1)

nice(1)

nl(1)

nm(1)

nohup(1)

notify(1)

nroff(1)

od(1)

on(1)

onintr(1)

optisa(1)

pack(1)

page(1)

pagesize(1)

pam_tty_tickets.so(1)

pargs(1)

passwd(1)

paste(1)

patch(1)

pathchk(1)

pax(1)

pcat(1)

pcred(1)

perl(1)

pfbash(1)

pfcsh(1)

pfexec(1)

pfiles(1)

pfksh(1)

pflags(1)

pfsh(1)

pftcsh(1)

pfzsh(1)

pg(1)

pgrep(1)

pkcs11_inspect(1)

pkginfo(1)

pkgmk(1)

pkgparam(1)

pkgproto(1)

pkgtrans(1)

pkill(1)

pklogin_finder(1)

pktool(1)

plabel(1)

pldd(1)

plgrp(1)

plimit(1)

pmadvise(1)

pmap(1)

popd(1)

ppgsz(1)

ppriv(1)

pr(1)

praliases(1)

prctl(1)

preap(1)

print(1)

printenv(1B)

printf(1)

priocntl(1)

proc(1)

prof(1)

profiles(1)

projects(1)

prs(1)

prt(1)

prun(1)

ps(1)

ps(1B)

psig(1)

pstack(1)

pstop(1)

ptime(1)

ptree(1)

pushd(1)

pvs(1)

pwait(1)

pwd(1)

pwdx(1)

ranlib(1)

rcapstat(1)

rcp(1)

read(1)

readonly(1)

red(1)

refer(1)

regcmp(1)

rehash(1)

remote_shell(1)

remsh(1)

renice(1)

repeat(1)

reset(1B)

return(1)

rksh(1)

rksh88(1)

rlogin(1)

rm(1)

rmail(1)

rmdel(1)

rmdir(1)

rmformat(1)

rmmount(1)

rmumount(1)

roffbib(1)

roles(1)

rpcgen(1)

rpm2cpio(1)

rsh(1)

runat(1)

rup(1)

rup(1C)

ruptime(1)

rusage(1B)

rusers(1)

rwho(1)

sact(1)

sar(1)

sccs(1)

sccs-admin(1)

sccs-cdc(1)

sccs-comb(1)

sccs-delta(1)

sccsdiff(1)

sccs-get(1)

sccs-help(1)

sccshelp(1)

sccs-prs(1)

sccs-prt(1)

sccs-rmdel(1)

sccs-sact(1)

sccs-sccsdiff(1)

sccs-unget(1)

sccs-val(1)

scp(1)

script(1)

sdiff(1)

sed(1)

sed(1B)

select(1)

set(1)

setenv(1)

setfacl(1)

setlabel(1)

setpgrp(1)

settime(1)

sftp(1)

sh(1)

shcomp(1)

shell_builtins(1)

shift(1)

shutdown(1B)

size(1)

sleep(1)

soelim(1)

sort(1)

sortbib(1)

sotruss(1)

source(1)

sparc(1)

spell(1)

spellin(1)

split(1)

srchtxt(1)

ssh(1)

ssh-add(1)

ssh-agent(1)

ssh-http-proxy-connect(1)

ssh-keygen(1)

ssh-keyscan(1)

ssh-socks5-proxy-connect(1)

stop(1)

strchg(1)

strconf(1)

strings(1)

strip(1)

stty(1)

stty(1B)

sum(1)

sum(1B)

sun(1)

suspend(1)

svcprop(1)

svcs(1)

switch(1)

symorder(1)

sys-suspend(1)

sysV-make(1)

t300(1)

t300s(1)

t4014(1)

t450(1)

tabs(1)

tail(1)

talk(1)

tar(1)

tbl(1)

tcopy(1)

tee(1)

tek(1)

telnet(1)

test(1)

test(1B)

tftp(1)

time(1)

timemanp(1)

times(1)

timesysp(1)

timex(1)

tip(1)

touch(1)

touch(1B)

tplot(1)

tput(1)

tr(1)

tr(1B)

trap(1)

troff(1)

true(1)

truss(1)

tset(1B)

tsort(1)

tty(1)

type(1)

typeset(1)

ul(1)

ulimit(1)

umask(1)

unalias(1)

uname(1)

uncompress(1)

unexpand(1)

unget(1)

unhash(1)

unifdef(1)

uniq(1)

units(1)

unix2dos(1)

unlimit(1)

unpack(1)

unset(1)

unsetenv(1)

until(1)

updatehome(1)

uptime(1)

userattr(1)

users(1B)

uucp(1C)

uudecode(1C)

uuencode(1C)

uuglist(1C)

uulog(1C)

uuname(1C)

uupick(1C)

uustat(1C)

uuto(1C)

uux(1C)

vacation(1)

val(1)

valdate(1)

valgid(1)

valint(1)

valpath(1)

valrange(1)

valstr(1)

valtime(1)

valuid(1)

valyorn(1)

vc(1)

vedit(1)

ver(1)

vgrind(1)

vi(1)

view(1)

vipw(1B)

volcheck(1)

volrmmount(1)

w(1)

wait(1)

wc(1)

what(1)

whatis(1)

whence(1)

whereis(1B)

which(1)

while(1)

who(1)

whoami(1B)

whocalls(1)

whois(1)

write(1)

xargs(1)

xgettext(1)

xstr(1)

yacc(1)

yes(1)

ypmatch(1)

yppasswd(1)

ypwhich(1)

zcat(1)

zlogin(1)

zonename(1)

zonestat(1)

priocntl

- 指定したプロセスおよび LWP のスケジューリングパラメータの表示または設定

形式

priocntl -l
priocntl -d [-i idtype] [idlist]
priocntl -s [-c class] [class-specific  options] 
     [-i idtype] [idlist]
priocntl -e [-c class] [class-specific  options] command 
     [argument(s)]

機能説明

priocntl コマンドは、指定したプロセスまたは LWP のスケジューリングパラメータを表示または設定します。また、システムのプロセススケジューラの 現在の設定情報を表示したり、指定したスケジューリングパラメータを使って コマンドを実行したりする目的にも使用できます。

プロセスと LWP はいくつかのクラスに分けられます。各クラスにはそれぞれ異なったスケジューリング方針が適用されます。現在サポートされているクラスは、リアルタイムクラス、タイムシェアリングクラス、対話型クラス、フェアシェアクラス、および固定優先順位クラスです。各クラスの特徴およびクラス固有のオプションについては、後述の「リアルタイムクラス」、「タイムシェアリングクラス」、「対話型クラス」、「フェアシェアクラス」、「固定優先順位クラス」の節で説明します。ユーザーは、正しいアクセス権を持っていれば、priocntl コマンドを使って、稼動中のプロセスまたは LWP のクラスや対応するスケジューリングパラメータを変更できます。

デフォルトの設定では、実行可能状態にあるリアルタイムプロセスまたは LWP がほかのプロセスに先だって実行されます。したがって、リアルタイムプロセスまたは LWP の使い方を誤ると、システムのパフォーマンスが著しく損なわれてしまう恐れがあります。

priocntl コマンドに idlist 引数を指定する場合は、コマンド行の最後に記述してください。また idlist 中の要素は、スペースで区切る必要があります。idlist 引数を省略するときは、idtype 引数として pidppidpgidsidtaskidclassuidgidprojid、または zoneid を使って、priocntl コマンド自体のプロセス ID、親プロセス ID、プロセスグループ ID、セッション ID、タスク ID、クラス、ユーザー ID、グループ ID、プロジェクト ID、またはゾーン ID をそれぞれ指定します。

コマンド

priocntl -d [-i idtype] [idlist]

これは、idtype および idlist 引数で指定したプロセス群のクラスとクラス固有のスケジューリングパラメータを表示します。

コマンド

priocntl -s [-c class] [class-specific options] \
     [-i idtype] [idlist]

これは、指定したプロセスのクラスおよび クラス固有のパラメータを、コマンド行で指定した値に設定します。-c class オプションが、設定するクラスを表します。現在サポートされている class 引数値は、リアルタイムクラス用の RT、タイムシェアリングクラス用の TS、対話型クラス用の IA、フェアシェア用の FSS、固定優先順位用の FX のいずれかです。

各クラス固有のパラメータは、対応するクラス固有のオプションを使って指定します。詳しくは各クラスの項で後述します。-c class オプションを省略する場合には、idtypeidlist を使って、同じクラスに属する一群のプロセスまたは LWP を指定してください。そうしないとエラーが発生します。クラス固有のオプションをすべて省略すると、このプロセスのクラス固有パラメータの値は、-c class で指定したクラスのデフォルト値に設定されます。なお、-c class オプションも省略した場合には、そのプロセスの現在のクラスのデフォルト値に設定されます。

priocntl を使ってプロセスまたは LWP のスケジューリングパラメータを変更するには、priocntl を実行したユーザーの実ユーザー ID または実効ユーザー ID (それぞれのグループ ID) がこのプロセスまたは LWP の実ユーザー ID または実効ユーザー ID (それぞれのグループ ID) と一致しているか、ユーザーの実効ユーザー ID がスーパーユーザーを示している必要があります。アクセス権に関するこの要件は、全クラスに適用される最低限の必要条件です。クラスによっては、プロセスを設定する場合や クラス固有のスケジューリングパラメータを設定する場合に、他のアクセス権に関する要件が追加されることもあります。

idtypeidlist の両引数を使って (LWP のリストを指定して、または指定しないで) いくつかのプロセスを指定すると、priocntl はそれらのプロセスに対して処理を実行します。ただし、処理する順序は実装状態により異なります。エラーを検出した場合、そのエラーの種類により、以降のプロセスの処理を続行できる場合と続行できない場合とがあります。

検出したエラーがアクセス権に関連するものであれば、priocntl はエラーメッセージを出力しますが、設定されたプロセスのうちユーザーが適正な アクセス権を持っているものについては、パラメータをリセットして処理を続行します。エラーがアクセス権に関連したものでなければ、エラーメッセージを表示してただちに実行を終了します。

特殊なシステムプロセス (たとえばスワッパプロセス) の実行をスケジューリングする目的のため、sys という特殊なスケジューリングクラスが存在しています。どのプロセスに対しても、クラスを sys に変更することはできません。また、idtypeidlist 引数で sys クラスに属するプロセスまたは LWP を指定した場合、priocntl はそれらを無視します。たとえば idtype として uid を指定し idlist に 0 (ゼロ) を指定すると、UID の値が 0 の全プロセスのうち sys クラスに属するものを除いたプロセス、および (-s オプションを使ってパラメータを変更する場合には) init プロセスが処理の対象となります。

init プロセス (プロセス ID は 1) は特殊なケースです。priocntl コマンドを使って init プロセスのクラスやその他のスケジューリングパラメータを変更するためには、idtype として pid を指定し、idlist として 1 だけを指定してください。init プロセスは、システム上に存在するどのクラスに割り当てても構いませんが、ほとんどの場合タイムシェアリングクラスを選択するのが適切です。ほかのクラスに割り当てると、システムに悪影響を及ぼすことがあります。詳細は『Oracle Solaris の管理: 一般的なタスク』を参照してください。

次のコマンドを見てください。

priocntl -e [-c class] [class-specific options] command \
     [argument...]

このコマンドは、command で示すコマンドを、指定したクラスとスケジューリングパラメータを使って実行します。arguments は、command に対する引数です。-c class オプションを省略すると、指定したコマンドはユーザーの現クラスで実行されます。

オプション

次のオプションがサポートされています。

-c class

設定するクラスを指定します。現在サポートされている class 引数値は、リアルタイムクラス用の RT、タイムシェアリングクラス用の TS、対話型クラス用の IA、フェアシェア用の FSS、固定優先順位用の FX のいずれかです。指定したクラスが構成されていない場合には、自動的に構成されます。

-d

設定したプロセスに対応したスケジューリングパラメータを表示します。

-e

指定したコマンドを、指定したプロセスに 対応したスケジューリングパラメータを使って実行します。

-i idtype

このオプションは、idlist 引数 (もし存在していれば) とともに、priocntl コマンドの処理対象となる 1 つ以上のプロセスまたは LWP を指定します。idlist がどのように解釈されるかは、idtype の値により異なります。-d オプションまたは -s オプションを指定するときに、-i idtype オプションを指定しない場合、デフォルトの idtype として pid が想定されます。

idtype として指定可能な値、およびそれぞれの値に対応した idlist の解釈は以下のとおりです。

-i all

priocntl コマンドの処理対象は、存在しているすべてのプロセスです。この場合、idlist 引数は指定できません。指定しても無視されます。また次に述べるアクセス権上の制限事項は、この all 指定の場合でも有効です。

-i ctid

idlist は、プロセスの契約 ID のリストです。priocntl コマンドの処理対象は、リスト内の ID と同一のプロセスの契約 ID を持つすべてのプロセスです。

-i class

idlist は単一のクラス名です (リアルタイム クラスなら RT 、タイムシェアリングクラスなら TS 、対話型クラスなら IA、フェアシェアクラスなら FSS、固定優先順位クラスなら FX)。priocntl コマンドの処理対象は、指定されたクラスに属するすべてのプロセスです。

-i gid

idlist はグループ ID のリストです。priocntl コマンドの処理対象は、リスト内の ID と同一の実効グループ ID を持つすべてのプロセスです。

-i pgid

idlist はプロセスグループ ID のリストです。priocntl コマンドは、指定されたプロセスグループ内のすべてのプロセスに適用されます。

-i pid[/lwps]

idlist は、プロセス ID のリストです。各 ID の後ろには、スラッシュ (/) とコンマで区切られた LWP ID が続くことがあります。LWP ID の範囲は、- によって示すことができます。

-i ppid

idlist は親プロセス ID のリストです。priocntl コマンドの処理対象は、リスト内に親プロセス ID があるすべてのプロセスです。

-i projid

idlist はプロジェクト ID のリストです。priocntl コマンドの処理対象は、リスト内の ID と同一の実効プロジェクト ID を持つすべてのプロセスです。

-i sid

idlist はセッション ID のリストです。priocntl コマンドの処理対象は、指定されたセッション中のすべてのプロセスです。

-i taskid

idlist はタスク ID のリストです。priocntl コマンドの処理対象は、指定されたタスク中のすべてのプロセスです。

-i uid

idlist はユーザー ID のリストです。priocntl コマンドの処理対象は、リスト内の ID と同一の実効ユーザー ID を持つすべてのプロセスです。

-i zoneid

idlist はゾーン ID のリストです。priocntl コマンドの処理対象は、リスト内の ID と同一の実効ゾーン ID を持つすべてのプロセスです。

-l

現在システム上に定義されているクラスの一覧を、各クラス固有の情報とともに表示します。クラス固有情報の出力形式は「使用法」の節で説明します。

-s

指定したプロセスに対応したスケジューリングパラメータを設定します。

リアルタイムクラスのパラメータを設定する場合には、以下のクラス固有のオプションを指定できます。

-p rtpri

指定したプロセスおよび LWP のリアルタイム優先順位を、rtpri に設定します。

-t tqntm [-r res]

指定したプロセスのタイムクアンタムを、tqntm に設定します。タイムクアンタムの単位を指定することも可能です (詳しくは後述)。

-q tqsig

指定したプロセスおよび LWP のリアルタイムのタイムクアンタムシグナルを tqsig に設定します。

タイムシェアリングクラスのパラメータを設定する場合には、以下のクラス固有のオプションを指定できます。

-m tsuprilim

指定したプロセスおよび LWP のユーザー優先順位の制限値を、tsuprilim に設定します。

-p tsupri

指定したプロセスおよび LWP のユーザー優先順位を、tsupri に設定します。

対話型クラスのパラメータを設定する場合には、以下のクラス固有のオプションを指定できます。

-m iauprilim

指定したプロセスおよび LWP のユーザー優先順位の制限値を、iauprilim に設定します。

-p iaupri

指定したプロセスおよび LWP のユーザー優先順位を、iaupri に設定します。

フェアシェアクラスのパラメータを設定する場合には、以下のクラス固有のオプションを指定できます。

-m fssuprilim

指定したプロセスおよび LWP のユーザー優先順位の制限値を、fssuprilim に設定します。

-p fssupri

指定したプロセスおよび LWP のユーザー優先順位を、fssupri に設定します。

固定優先順位クラスのパラメータを設定する場合には、以下のクラス固有のオプションを指定できます。

-m fxuprilim

指定したプロセスおよび LWP のユーザー優先順位の制限値を、fxuprilim に設定します。

-p fxupri

指定したプロセスおよび LWP のユーザー優先順位を、fxupri に設定します。

-t tqntm

[-r res] 指定したプロセスおよび LWP のタイムクアンタムを、tqntm に設定します。タイムクアンタムの単位を指定することも可能です (詳しくは後述)。

使用法

リアルタイムクラス

リアルタイムクラスは、高速でかつ決定力のある応答を必要とし、スケジューリング方針に関して ユーザーやアプリケーションに対する 絶対的な制御権を必要とするようなプロセスに対して、固定された高い優先順位を持つ スケジューリング方針を与えるものです。システム中にリアルタイムクラスが定義されている場合には、システム上の最上位のスケジューリング優先順位群を 制御できる唯一のクラスである必要があります。これにより、実行可能状態にあるリアルタイムプロセスは、ほかのクラスに属するあらゆるプロセスよりも先に CPU のサービスを受けられることが保証できます。

リアルタイムクラスには、一連のリアルタイム優先順位値 (rtpri) が与えられていて、そのクラスに属するプロセスに割り当てることができます。リアルタイム優先順位値の範囲は 0 から x までで、この x の値はリアルタイムクラスのスケジューラを構成済みのシステムごとに設定可能であり、次のコマンドを使って表示することができます。

priocntl -l

リアルタイムクラスのスケジューリング方針とは、固定優先順位を割り当てることです。つまり、ユーザーやアプリケーション側からのプロセスの rtpri 値を変更する明示的な要求を実行しない限り、リアルタイムプロセスのスケジューリング優先順位は 変わりません。

リアルタイムクラスのプロセスに関して、rtpri の値はプロセスのスケジューリング優先順位と実用上同じです。リアルタイムクラスのあるプロセスの、同じクラス内の他のプロセスに対する 相対的なスケジューリング優先順位値は、rtpri 値により決定されます。rtpri 値は数値で示され、大きい数が高い優先順位を表します。リアルタイムクラスはシステム中で最も高い スケジューリング優先順位群を制御しているので、実行可能状態にあるリアルタイムプロセスのうち最高の rtpri 値を持つプロセスが システム中の他のあらゆるプロセスに先だって選ばれる、ということが保証されています。

priocntl は、優先順位に関する制御権だけでなく、リアルタイムクラス中のプロセスに割り当てられるタイムクアンタムを制御する権利も提供しています。このタイムクアンタム値は、プロセスがリソースやイベントの待ち状態 (休眠状態) に陥らないという前提で、プロセスの実行時間の最大値を指定するものです。なお、あるプロセスの稼動中に、より高い優先順位を持つ他のプロセスが 実行可能状態になった場合、現在稼動中のプロセスは割り当てられたタイムクアンタムに達していなくても 取り上げられてしまうことがあります。

次のコマンドを見てください。

priocntl -d [-i idtype] [idlist]

このコマンドは、idtypeidlist で指定した一群のリアルタイムプロセスの 個々のリアルタイム優先順位、時間 (単位はミリ秒)、およびタイムクアンタムシグナル値を表示します。

リアルタイムクラス用の priocntl -s または priocntl -e コマンドには、-p-t [-r]、および -q を任意の組み合わせで指定できます。どれかを省略した場合、当該プロセスが現在リアルタイムであれば、省略されたオプションに対応したパラメータには影響ありません。あるプロセスをほかのクラスからリアルタイムクラスに変更するような priocntl コマンド中でいずれかのオプションを省略すると、そのオプションに対応したパラメータはデフォルト値に設定されます。rtpri のデフォルト値は 0 です。タイムクアンタムのデフォルトは、rtpri の値およびシステムの構成により異なります (rt_dptbl(4) 参照)。

-t tqntm オプションを使用する際、タイムクアンタムの単位を -r res オプションを使って指定することもできます。単位のデフォルトはミリ秒です。res には、1 から 1,000,000,000 までの正の整数を指定してください。この場合、使用される単位は res 分の 1 秒となります。たとえば、-t 10 -r 100 と指定すると、単位は 100 分の 1 秒となり、タイムクアンタム長として指定されている 10 は、10/100 つまり 10 分の 1 秒を意味することになります。ナノ秒などの細かい単位も指定可能ですが、実際にはシステムクロックの精度に合うように タイムクアンタム長は丸められてしまいます。タイムクアンタムとして 0 を指定した場合、およびシステムに固有の最大クアンタムを超える 大きな値を指定した場合には、エラーとなります。

リアルタイム時間シグナルを使用すると、実行中のリアルタイムプロセスに自身の時間消費量を知らせることができます。リアルタイム時間シグナルはリアルタイムプロセスを監視し、その実行時間が上限に達した時点で、設定されているシグナルをリアルタイムプロセスに送信します。時間シグナル tqsig のデフォルト値 (0) は、シグナルを送信しないことを示します。tqsig に正の値を指定すると、その値ごとに設定されているシグナルが送信されます。kill(1) などのシグナルを扱う コマンドの場合と同様に、-q tqsig オプションを指定して XCPUKILL のようなシンボルを使用したシグナル名も扱うことができます。

プロセスのクラスを他のものからリアルタイムクラスに変更するには、priocntl コマンドを実行するユーザーがスーパーユーザー特権を 持つ必要があります。また、リアルタイムプロセスの rtpri 値やタイムクアンタムを変更するには、priocntl コマンドを実行するユーザーはスーパーユーザーであるか、あるいは現在リアルタイムクラスにいて (リアルタイムプロセスとして稼動中のシェル) その実ユーザー ID または実効ユーザー ID が処理対象のプロセスの実ユーザー ID または実効ユーザー ID と一致している必要があります。

fork(2)exec(2) などのシステムコールを使った場合、リアルタイム優先順位、タイムクアンタム、およびタイムクアンタムシグナルは、これらのシステムコールに受け継がれます。exec(2) システムコールで、ユーザー定義のシグナルハンドラを持つ時間シグナルが使用された場合、指定された時間の上限に達する前に、新しいイメージの中にユーザーが定義のシグナルハンドラがインストールされている必要があります。そうでない場合、予測できない動作が発生します。

タイムシェアリングクラス (TS クラス)

タイムシェアリングのスケジューリング方針とは、CPU の消費に関して異なった性質を持つプロセスに対して、公平で有効な CPU リソースの割り付けを行うことです。タイムシェアリング方針の目的は、対話型プロセスには速いレスポンスを提供し、CPU 消費型のジョブには高いスループットを提供し、さらにスケジューリングの制御権をユーザーやアプリケーションにもある程度与えることにあります。

タイムシェアリングクラスには、一連のタイムシェアリングユーザー優先順位値 (rtpri) が与えられていて、そのクラスに属するプロセスに割り当てることができます。ユーザー優先順位値の範囲は -x から +x までで、この x の値はシステムごとに設定可能であり、以下のコマンドを使って表示することができます。

priocntl -l

ユーザー優先順位の目的は、タイムシェアリングクラスのプロセスのスケジューリングを、ユーザーやアプリケーションがある程度制御できるようにすることです。タイムシェアリングクラスのプロセスの tsupri 値を増減させれば、そのプロセスのスケジューリング優先順位が上下します。ただし、高い tsupri 値を持つタイムシェアリングプロセスが、低い tsupri 値を持つプロセスよりも先に実行されるとは限りません。なぜなら tsupri 値は、タイムシェアリングプロセスの スケジューリング優先順位を決定する際の 要素の 1 つにしかすぎないからです。システムは最近のシステム利用率などほかの要素を考慮の上、タイムシェアリングプロセスの 内部スケジューリング優先順位を動的に調整します。

priocntl -l で表示される、システム全体でのユーザー優先順位上限のほかに、プロセスごとにユーザー優先順位上限 (tsuprilim) があります。この値は、プロセスの tsupri として設定できる最大の値を示します。

次のコマンドを見てください。

priocntl -d [-i idtype] [idlist]

このコマンドは、idtypeidlist で指定した一群のタイムシェアリングプロセスの 個々のユーザー優先順位と 優先順位制限値を表示します。

タイムシェアリングプロセスは、自身の (および同じユーザー ID を持つほかのプロセスの) tsuprilim 値を下げることができます。tsuprilim 値を上げることができるのは、スーパーユーザー特権を持つプロセスだけです。あるプロセスのクラスをタイムシェアリングから他のクラスに変更する場合、tsuprilim の初期値を 0 より大きい値に設定するには、スーパーユーザー特権が必要となります。

どのタイムシェアリングプロセスも、自身の (および同じユーザー ID を持つ他のプロセスの) tsupri 値を設定できますが、そのプロセスの tsuprilim 値を超えることはできません。tsuprilim を超える値に tsupri を設定しようとした場合、または tsupri 未満の値に tsuprilim を設定しようとした場合には、結果として tsupritsuprilim と等しい値に設定されます。

タイムシェアリングクラス用の priocntl -s または priocntl -e コマンド中に、-m-p の両オプションを任意の組み合せで指定できます。どちらかを省略した場合、当該プロセスが現在タイムシェアリングであれば、省略されたオプションに対応したパラメータには通常影響ありません。ただし、-p オプションを省略し、-m を使って tsuprilim の値を tsupri 未満に設定しようとした場合は例外です。このような設定を試みると、tsupri は現在の tsuprilim の値に設定されます。あるプロセスを他のクラスから タイムシェアリングクラスに変更する際に いずれかのオプションを省略すると、そのオプションに対応したパラメータはデフォルト値に設定されます。tsuprilim のデフォルト値は 0 です。tsupri のデフォルト値は、現在設定されている tsuprilim の値です。

fork(2)exec(2) などのシステムコールを使った場合、タイムシェアリングユーザー優先順位 およびユーザー優先順位の制限値は受け継がれます。

対話型クラス

対話型のスケジューリング方針とは、CPU の消費に関して異なった性質を持つプロセスに対して、公平で有効な CPU リソースの割り付けを行い、さらに対話用に速いレスポンスを提供することです。対話型方針の目的は、対話型プロセスには速いレスポンスを提供し、CPU 消費型のジョブには高いスループットを提供することにあります。対話型クラスにある処理の優先順位は、タイムシェアリングクラスにある処理と同じように変更できます。ただし、修正された優先順位はユーザーとの対話の速い応答性を 提供するために継続します。

対話型クラスのユーザー優先順位の制限値 iauprilimtsuprilim と同等です。対話型クラスの、プロセスごとのユーザー優先順位 iaupritsupri と同等です。

iamode (対話型モード) のビットが設定されている対話型クラスのプロセスには、最優先順位を示す値 10 が割り当てられます。この値を持つプロセスは、優先順位の計算が行われるとき、つまり、プロセスの優先順位が再調整されるたびに、そのプロセスのユーザーモード優先順位に組み込まれます。この機能は、X ウィンドウシステムで使用されています。X ウィンドウシステムでは、このビットを現在アクティブなウィンドウ内で実行中のプロセスに割り当てて、そのプロセスにより高い優先順位を与えています。

公平共有クラス (FSS クラス)

フェアシェアのスケジューリング方針とは、所有するプロセスの数に関係なく、各プロジェクト間に公平に CPU リソースを割り付けることです。プロジェクトには、CPU リソースの使用権を制御するための「割り当て数」が与えられます。一定時間ごとに CPU リソースの使用量が通知されるため、他のプロジェクトより使用量の多いプロジェクトの使用権は縮小され、使用量の少ないプロジェクトの使用権は拡大されます。CPU 時間は、各プロジェクトが所有するプロセスの数とは無関係に、プロジェクトごとの使用権に応じてスケジュールされます。

FSS スケジューリングクラスは、タイムシェアリングスケジューラとの互換性を保持するために、プロセス単位のユーザー優先順位およびユーザー優先順位上限という概念を取り入れています。フェアシェアスケジューラは、ユーザー優先順位の全領域について、均等な効果を提供することを目的としています。負の fssupri 値を持つプロセスには、通常より頻度の低いタイムスライスが配分され、正の fssupri 値を持つプロセスには、通常より頻度の高いタイムスライスが配分されます。ユーザー優先順位が割り当て数に影響することはありません。つまり、プロセスの fssupri 値を変更しても、そのプロセスの属するプロジェクト全体の CPU 使用量は変更されません。CPU 使用量に影響するものは、ほかのプロジェクトとの比較によって割り付けられる割り当て数の配分のみです。

フェアシェアクラス内のプロセスの優先順位は、タイムシェアリングクラスのプロセスの優先順位と同じ方法で変更できます。

固定優先順位クラス(FX クラス)

固定優先順位クラスは、システムによってプロセスのスケジューリング優先順位が調整されることなく、ユーザーまたはアプリケーションがプロセスのスケジューリング優先順位を制御できる、優先順位が固定された事前定義のスケジューリング方針を提供します。

固定優先順位クラスは、デフォルトではタイムシェアリングクラスとスケジューリング優先順位の同じ範囲を共有しています。固定優先順位クラスには、ユーザー優先順位値 (fxupri) の範囲が与えられ、そのクラスに属するプロセスに割り当てることができます。ユーザー優先順位値の範囲は 0 から x までで、この x の値はリアルタイムクラスのスケジューラを 構成済みのシステムごとに設定可能であり、以下のコマンドを使って表示することができます。

priocntl -l

ユーザー優先順位の目的は、固定優先順位クラスのプロセスのスケジューリングを、ユーザーやアプリケーションが制御できるようにすることにあります。固定優先順位クラスのプロセスに関して、fxupri の値はプロセスのスケジューリング優先順位と実用上同じです。固定優先順位のあるプロセスの、同じクラス内の他のプロセスに対する 相対的なスケジューリング優先順位値は、fxupri 値により決定されます。fxupri 値は数値で示され、大きい数が高い優先順位を表します。

priocntl -l で表示される、システム全体でのユーザー優先順位上限のほかに、プロセスごとにユーザー優先順位上限 (fxuprilim) があります。この値は、プロセスの fxupri として設定できる最大の値を示します。

固定優先順位プロセスは、自身の (および同じユーザー ID を持つ他のプロセスの) fxuprilim 値を下げることができます。fxuprilim 値を上げることができるのは、スーパーユーザー特権を持つプロセスだけです。あるプロセスのクラスを固定優先順位から他のクラスに変更する場合、fxuprilim の初期値を 0 より大きい値に設定するには、スーパーユーザー特権が必要となります。

どの固定優先順位プロセスも、自身の (および同じユーザー ID を持つ他のプロセスの) fxupri 値を設定できますが、そのプロセスの fxuprilim 値を超えることはできません。fxuprilim を超える値に fxupri を設定しようとした場合、または fxupri 未満の値に fxuprilim を設定しようとした場合には、結果として fxuprifxuprilim と等しい値に設定されます。

priocntl は、優先順位に関する制御権だけでなく、固定優先順位クラス中のプロセスに割り当てられるタイムクアンタムを制御する権利も提供しています。このタイムクアンタム値は、プロセスがリソースやイベントの待ち状態 (休眠状態) に陥らないという前提で、プロセスの実行時間の最大値を指定するものです。なお、あるプロセスの稼動中に、より高い優先順位を持つ他のプロセスが 実行可能状態になった場合、現在稼動中のプロセスは割り当てられたタイムクアンタムに達していなくても 取り上げられてしまうことがあります。

固定優先順位クラス用の priocntl -s または priocntl -e コマンドには、-m-p、および -t を任意の組み合わせで指定できます。どれかを省略した場合、当該プロセスが現在固定優先順位であれば、省略されたオプションに対応したパラメータには影響ありません。ただし、-p を省略して、-m オプションで fxuprilim の値を現在の fxupri の値より小さな値に設定した場合は例外です。この場合、fxupri は、設定された fxuprilim の値と同じ値になります。あるプロセスを他のクラスから固定優先順位クラスに変更するときにオプションを省略すると、そのオプションに対応したパラメータはデフォルト値に設定されます。fxuprilim のデフォルト値は 0 です。fxupri の値は、設定されている fxuprilim の値とデフォルトで同じになります。タイムクアンタムのデフォルトは、設定されている fxupri の値およびシステムの構成により異なります (fx_dptbl(4) 参照)。

固定優先順位クラス内のプロセスのタイムクアンタムは、リアルタイムクラスのプロセスのタイムクアンタムと同じ方法で変更できます。

fork(2)exec(2) などのシステムコールを使った場合、固定優先順位のユーザー優先順位、ユーザー優先順位上限、およびタイムクアンタムは、これらのシステムコールに受け継がれます。

使用例

リアルタイムクラスの例を示します。

例 1 クラスを設定する

idtypeidlist で指定された非リアルタイムのプロセスのクラスを リアルタイムに変更し、リアルタイム優先順位値をデフォルトの 0 に設定します。現在リアルタイムクラスに属しているプロセスの リアルタイム優先順位値は変わりません。指定されたプロセスのタイムクアンタムは、すべて 1/10 秒に設定されます。

example% priocntl -s -c RT -t 1 -r 10 -i idtype idlist

例 2 リアルタイムでコマンドを実行する

command で指定したコマンドをリアルタイムクラスで実行します。リアルタイム優先順位値は 5 で、タイムクアンタムは 20 ミリ秒となります。

example% priocntl -e -c RT -p 15 -t 20 command

例 3 時間シグナルを指定して、リアルタイムでコマンドを実行する

command で指定したコマンドをリアルタイムクラスで実行します。リアルタイム優先順位値は 11 、タイムクアンタムは 250 ミリ秒で、リアルタイム時間シグナルは SIGXCPU となります。

example% priocntl -e -c RT -p 11 -t 250 -q XCPU command

タイムシェアリングクラスの例を示します。

例 4 非タイムシェアリングプロセスのクラスを設定する

idtypeidlist で指定した非タイムシェアリングのプロセスのクラスを タイムシェアリングに変更し、ユーザー優先順位値と優先順位制限値を 0 に設定します。現在タイムシェアリングクラスに属しているプロセスには 影響を与えません。

example% priocntl -s -c TS -i idtype idlist

例 5 タイムシェアリングクラスでコマンドを実行する

command で指定したコマンドを、arguments で指定した引数を使ってタイムシェアリングクラスで実行します。ユーザー優先順位の制限値は 0 で、ユーザー優先順位は -15 となります。

example% priocntl -e -c TS -m 0 -p -15 command [arguments]

例 6 固定優先順位クラスでコマンドを実行する

command で指定したコマンドを固定優先順位クラスで実行します。ユーザー優先順位値上限は 20、ユーザー優先順位は 10 で、タイムクアンタムは 250 ミリ秒となります。

example% priocntl -e -c FX -m 20 -p 10 -t 250 command

例 7 特定の LWP の優先順位の変更

次の例では、プロセス 500 の LWP 5 のユーザー優先順位制限に 20、ユーザー優先順位に 15 を設定します。

example% priocntl -s -m 20 -p 15 500/5

終了ステータス

次の終了値が返されます。

-d-l-s オプションの場合:

0

正常終了。

1

エラーが発生しました。

-e オプションの場合:

正常終了を表す、実行されたコマンドの終了ステータスが返されます。それ以外の場合は、次のステータスが返されます。

1

コマンドは指定された優先順位で実行できなかった。

属性

属性についての詳細は、attributes(5) を参照してください。

属性タイプ
属性値
使用条件
system/core-os
CSI
有効

関連項目

kill(1), nice(1), ps(1), dispadmin(1M), exec(2), fork(2), priocntl(2), fx_dptbl(4), process(4), rt_dptbl(4), attributes(5), zones(5), FSS(7)

『Oracle Solaris の管理: 一般的なタスク』

診断

priocntl は次に示すエラーメッセージを出力します。

Process(es) not found

指定されたプロセスが 1 つも存在しません。

Specified processes from different classes

-s オプションを使ってパラメータを設定しようとしたが、-c class オプションが省略されていて、複数のクラスのプロセスが指定されていました。

Invalid option or argument

指定されたオプションまたは引数の中に、認識できないものまたは不正なものがあります。