マニュアルページとウィキペディアによると、nice
範囲は-20から20です。
しかし、次のコマンドを実行すると、一部のプロセスに(-)などの数値以外の値があることがわかります。 「NI」というタイトルの左側の6番目の列を参照してください。
(-)の好感度とはどういう意味ですか?
ps axl
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
4 0 1 0 20 0 19356 1548 poll_s Ss ? 0:00 /sbin/init
1 0 2 0 20 0 0 0 kthrea S ? 0:00 [kthreadd]
1 0 3 2 -100 - 0 0 migrat S ? 0:03 [migration/0]
1 0 4 2 20 0 0 0 ksofti S ? 0:51 [ksoftirqd/0]
1 0 5 2 -100 - 0 0 cpu_st S ? 0:00 [migration/0]
5 0 6 2 -100 - 0 0 watchd S ? 0:09 [watchdog/0]
1 0 7 2 -100 - 0 0 migrat S ? 0:08 [migration/1]
1 0 8 2 -100 - 0 0 cpu_st S ? 0:00 [migration/1]
1 0 9 2 20 0 0 0 ksofti S ? 1:03 [ksoftirqd/1]
5 0 10 2 -100 - 0 0 watchd S ? 0:09 [watchdog/1]
1 0 11 2 -100 - 0 0 migrat S ? 0:05 [migration/2]
Ubuntu 12.04、CentOs 6.5、およびMac OsX 10.9を実行している3つのサーバーを確認しました。 UbuntuシステムとCentOsシステムには、数値ではなくおなじみの値があります。
答え1
(-)の好感度とはどういう意味ですか?
それらも持っています。まず原則スコアは-100です。これは、プロセスが次のように予約されたことを示します。リアルタイムプロセス。ライブプロセスは良いスコアを使用せず、通常のプロセスよりも優先順位が高くなりますが、依然として異なります。
chrt
コマンド(例)を使用して、各プロセスの詳細を表示できますchrt -p 3
。 -100の1つは、「現在の予約優先順位」99を報告できます。nice
こことは異なり、高い値はより高い優先順位を表し、おそらく-100
最上位の数値が生成される場所です。良い値に関係なく、リアルタイムでないプロセスは常に「現在のスケジューリング優先順位」がゼロchrt
で、Linuxでは「現在のスケジューリングポリシー」が表示されます
SCHED_OTHER
。
UbuntuシステムとCentOsシステムには、数値ではなくおなじみの値があります。
一部のバージョンでは、次のようにtop
リアルタイムプロセスを報告しているようです。rt
まず原則それでは0
、あなた。
答え2
@Goldlilockの答えは、私が正しい方法で研究を行うように導きました。私の研究の詳細は次のとおりです。
プロセスで使用可能なスケジューリングアルゴリズム
Linuxは3つのスケジューリング戦略をサポートしています。SCHED_FIFO
、、、SCHED_RR
そしてSCHED_OTHER
。SCHED_OTHER
ほとんどのプロセスで使用される基本的な汎用時分割スケジューラポリシーは、実行可能なプロセスの選択方法を正確に制御する必要がある時間が重要な特別なアプリケーションにSCHED_FIFO
適しています。SCHED_RR
利用可能な優先順位
実行するプロセスを選択するには、Linuxスケジューラは各プロセスの優先順位を考慮する必要があります。実際には2つの優先順位があります。
ㅏ静的優先順位各プロセスには値が割り当てられ、スケジュールはこの静的優先順位によって異なります。SCHED_OTHER
次SCHED_FIFO
またはそれ以下に予約されているプロセスは、〜(99が最も高い)の範囲の静的優先順位をSCHED_RR
持つことができます。1
99
このsys_sched_get_priority_max( )
ルーチンはプロセスの静的優先順位を返し、0
非リアルタイムプロセスを返します。
動的優先順位付けは、非リアルタイムアプリケーションで使用されます。
すべてのリアルタイムプロセスは通常のプロセスよりも優先順位が高くなります。 LinuxはPOSIXに従ってリアルタイムの優先順位を実装します。次の図は、プロセスのスケジュール方法と優先順位の概要を示しています。
HIGH PRIORITY – - – - – > – - – - – > – - – - – > – - – - – > – - – – LEAST PRIORITY
……..real time priority (static priority)…….| …. nice value (dynamic priority) …..
99 ……………………….. 50 ……………………… 1 | -20 …….. -10 …….. 0 …….. 10 ……. 19
これで、次のコマンドを実行してプロセスのリアルタイム優先順位を確認できます。ここでは - で示される良い値を持つウォッチドッグを使用しています。
ps -e -o class,rtprio,pri,nice,cmd | grep watchdog
上記のコマンドの結果です。ご覧のとおり、リアルタイム優先順位は99であり、これは可能な最も高い優先順位です。
FF 99 139 - [watchdog/0]
FF 99 139 - [watchdog/1]
TS - 21 0 grep watchdog
したがって、私が理解したところによると、リアルタイム優先順位の最大値は99なので、それ以上の値はありません。これが、監視やその他のシステムプロセスに対して良い結果が得られる理由です。
引用する
http://oreilly.com/catalog/linuxkernel/chapter/ch10.html http://atipaday.wordpress.com/2008/08/19/atad-21-linux-process-priority-range/