2

Unix システムでは、より低い CPU の「優先度」でプロセスを実行できます (厳密にpriority言えば、 と呼ばれるものは変更されませんが、使用可能な CPU 時間のどの部分が使用されるかに影響します。これは一般的に「優先度」です)。次のniceコマンドを使用します。

 nice program

そして、それを使用して JVM プロセスを実行できます。

 nice java -jar program.jar

その JVM プロセスによって実行される Java プログラムは、複数のスレッドを開始します。

このnice変更は、それらの Java スレッドのスケジューリングに影響しますか? つまり、Java スレッドを次のように実行すると、CPU 優先度が低くなりますか?

 nice java -jar program.jar

として実行するとき

 java -jar program.jar

一般に、これはシステムに依存するため、Linux のケースに関心があります。

4

3 に答える 3

2

報告によると、psniceness は Java スレッドに適用されます。ユーザー入力を待機する Java アプリケーションでこの簡単なテストを実行しました。

プロセスを開始:nice -n 19 java Main
の出力ps -m -l 20746

F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY        TIME CMD
0 -  1000 20746 10006  0   -   - - 1739135 -    pts/2      0:00 java Main
0 S  1000     -     -  0  99  19 -     - futex_ -          0:00 -
1 S  1000     -     -  0  99  19 -     - wait_w -          0:00 -
1 S  1000     -     -  0  99  19 -     - futex_ -          0:00 -
1 S  1000     -     -  0  99  19 -     - futex_ -          0:00 -

プロセスを開始:nice -n 15 java Main
の出力ps -m -l 21488

F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY        TIME CMD
0 -  1000 21488 10006  0   -   - - 1722494 -    pts/2      0:00 java Main
0 S  1000     -     -  0  95  15 -     - futex_ -          0:00 -
1 S  1000     -     -  0  95  15 -     - wait_w -          0:00 -
1 S  1000     -     -  0  95  15 -     - futex_ -          0:00 -
1 S  1000     -     -  0  95  15 -     - futex_ -          0:00 -

列はNI私が渡したものを反映しているようniceで、優先度もそれに応じて変化します。を使用してプロセス ID (20746、21488) を取得しましたjps

jstack 21488たとえば、実行しても上記の情報は得られないことに注意してください。

上記をUbuntu 16.04 LTS(64ビット)で実行しました

于 2017-05-04T15:32:08.603 に答える