たとえば、psを使用してfirefoxのPRI値を確認し、procfsにどの値が格納されているかを確認します。
$ ps -o pid,comm,pri,ni 7000
PID COMMAND PRI NI
7000 firefox 19 0
$ cat /proc/7000/stat
7000 (firefox) S 1 6447 6447 0 -1 4194304 3162595 624998 158 10 30467 6903 3360 488 20 0 63 0 464836 9472659456 123045 18446744073709551615 94866409246720 94866409429052 140727418541056 0 0 0 0 4096 33572095 0 0 0 17 2 0 0 342 0 0 94866411526576 94866411528296 94866422095872 140727418542495 140727418542520 140727418542520 140727418544095 0
man procによると、PRIの値は18番目の値(1から計算)で見つけることができるので、このときPRI = 20です。
ps
コマンドの出力と/ proc統計ファイルに保存されている値の間になぜそれほど大きな違いがあるのか疑問に思います。
ベストアンサー1
まあ、フィールドpri
は正確に39から表示される値を引いたものです/proc/$pid/stat
(したがって39 - 20 = 19)。また、「UNIX「PRI」ほど正当ではない」と言われています。
Unix98では、高い「PRI」優先順位が低いとのみ規定しています。
しかし、ここには該当しません。
しかし!以下もありません肉優先順位のための他の出力形式はすべて、元の値、否定、または否定といくつかの定数を持ちます。 1つを選択してください。以下は異なる値を持つ3匹の猫ですnice
。
$ ps -o pid,rtprio,pri,opri,priority,pri_foo,pri_bar,pri_baz,pri_api,ni,args -Ccat
PID RTPRIO PRI PRI PRI FOO BAR BAZ API NI COMMAND
18418 - 0 99 39 19 40 139 -40 19 cat /dev/zero
18419 - 19 80 20 0 21 120 -21 0 cat /dev/zero
18420 - 39 60 0 -20 1 100 -1 -20 cat /dev/zero
コードのコメントは次のとおりです。
SunとSCOはこの
-c
動作を追加しました。 Sun は「pri」と「opri」を定義します。
したがって、出力範囲を一致するように変更する必要があるいくつかの歴史的な理由があります。ここにある値をps -c
使用してください。カーネルがレンダリングした生の値です。pri
priority
関連ソースコードファイルは次のとおりですps/output.c
。
https://gitlab.com/procps-ng/procps/blob/master/ps/output.c#L585
返品:https://superuser.com/questions/286752/unix-ps-l-priority/286761
そしてhttps://stackoverflow.com/questions/18829350/linux-thread-priority-value