素敵な子プロセス


22

誰かが指定されたniceレベルと子プロセスの関係を教えてもらえますか?

たとえば、デフォルトniceのを持ち、で0スクリプトを開始するとnice 5、いくつかの子プロセス(この場合は約20)が開始され、子プロセスの利点は何ですか?


1
プロセスの良さを減らすことができるのはrootユーザーのみであり、その値は適切なfork実装の子プロセスに継承されます。
jw013

@ jw013-わかりやすく&するために、c&を使用せずに、子プロセスの生成に使用するスクリプトを作成していますfork
NWS

3
非Unix / Linux OSを使用している場合を除き、シェルがを使用してバックグラウンドプロセスを生成するのはかなり安全forkです。
jw013

回答:


28

子プロセスniceは、フォークされた時点で親によって保持されている値(例では5)を継承します。

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

これは監視ツールで簡単に確認できますtop。場合はnice、フィールド(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))は、子でゼロにリセットされます。
  • 子の保留シグナルのセットは、最初は空です(sigpending(2))。
  • 子は、親(semop(2))からセマフォ調整を継承しません。
  • 子は、親(fcntl(2))からレコードロックを継承しません。
  • 子は、親(setitimer(2)、alarm(2)、timer_create(2))からタイマーを継承しません。
  • 子は、親(aio_read(3)、aio_write(3))から未処理の非同期I / O操作を継承せず、親から非同期I / Oコンテキストも継承しません(io_setup(2)を参照)。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.