良いプロセスとサブプロセス

良いプロセスとサブプロセス

niceレベル指定とサブプロセスの関係が何であるかを教えてくれる人はいますか?

たとえば、デフォルトがあり、nice一部の子プロセス(この場合は約20個の並列プロセス)を開始する0スクリプトを実行している場合、nice 5子プロセスの利点は何ですか?

答え1

子プロセスは、niceフォーク時に親プロセスが保持していたすべての値を継承します(あなたの例では5)。

ただし、nice子プロセスをフォークした後に親プロセスの値が変更された場合、子プロセスは新しいnice値を継承しません。

モニタリングツールを使用すると、これを簡単に観察できますtopniceフィールド(NI)がデフォルトで表示されない場合は、をf押して選択して追加できますI。これにより、ディスプレイNIに列が追加されます。top

* I: NI = Nice value

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
1937 root      20   0  206m  66m  45m S  6.2  1.7  11:03.67 X                                         

良い情報が出ます。man 2 fork

fork()は呼び出しプロセスをコピーして新しいプロセスを作成します。新しいプロセス(サブプロセスと呼ばれる)は、以下を除いて呼び出しプロセス(親プロセスと呼ばれる)と同じです。

  • 子プロセスには一意のプロセスIDがあり、このPIDは既存のプロセスグループ(setpgid(2))のIDと一致しません。
  • 子プロセスの親プロセスIDは、親プロセスIDと同じです。
  • 子は親のメモリロック(mlock(2)、mlockall(2))を継承しません。
  • 子プロセスのプロセスリソース使用率(getrusage(2))とCPUタイムカウンタ(times(2))は0にリセットされます。
  • 子の保留中の信号セットは最初は空です(sigpending(2))。
  • 子は親(semop(2))からセマフォの調整を継承しません。
  • 子は親からレコードロック(fcntl(2))を継承しません。
  • 子プロセスは、親プロセスからタイマー(setitimer(2)、Alarm(2)、Timer_create(2))を継承しません。
  • 子は、親から処理されていない非同期I / O操作(aio_read(3)、aio_write(3))を継承せず、親から非同期I / Oコンテキストも継承しません(io_setup(2)を参照)。

関連情報