2017-05-04 2 views
2

の優先順位に影響を与える「良い」、あなたはniceコマンドを使用して低いCPUの優先度でプロセスを実行することができます。はいUNIXシステムのJavaスレッド

nice program 

そして、あなたはJVMプロセスを実行するためにそれを使用できます。

nice java -jar program.jar 

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

niceの変更は、これらのJavaスレッドのスケジューリングに影響しますか?これは、一般的には

java -jar program.jar 

として実行したときに、これはシステムに依存することになるので、私はtehの、Linuxの場合に興味を持っていることを

nice java -jar program.jar 

として実行すると、Javaスレッドが低いCPU優先度を持つことになります、です。

+0

http://stackoverflow.com/a/2866604/829571 – assylias

+1

「Niceness」は優先度と同じではありません。適切な目的は、2つのプロセスが同時にCPUバインドされている場合、「より良い」ものは平均してより少ないCPUサイクルを取得することです。 「優先度」は通常、非同期イベントが発生したときに、どのプロセスが他のプロセスを先取りできるかについてです。 –

答えて

2

によると、psは、Javaスレッドにnicenessが適用されていると報告しています。

スタートプロセスと::nice -n 19 java Main
出力スタートプロセスと

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 - 

ps -m -l 20746の:nice -n 15 java Main
出力

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 - 
ps -m -l 21488の私は、ユーザーの入力を待ち、Javaアプリケーションでこの簡単なテストを実行しました

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

たとえば、jstack 21488を実行すると、上記の情報は得られません。

私はUbuntuの16.04 LTS(64)

0

Javaは特別ではありません。それは単なるプロセスであり、OSは他のプロセスと同じようにその「ニッセン」を設定します。

Linuxでは、Javaスレッドはネイティブスレッドを使用して実装されるため、「niceness」は他のネイティブスレッドと同じ方法でOS制御の対象になります。

関連する問題