Processus gentils et enfants

Quelqu'un peut-il me dire quelle est la relation entre un niveau spécifié et des process fils?

Par exemple, si j'ai une valeur par défaut de 0 et que je lance un script avec nice 5 , qui démarre à son tour des process enfants (dans ce cas environ 20 en parallèle), quel est l'intérêt des process enfants?

Un process enfant hérite de toute valeur nice détenue par le parent au moment où il est forké (dans votre exemple, 5 ).

Cependant, si la valeur nice du process parent change après la conversion des process fils, les process fils n'héritent pas de la nouvelle valeur nice .

Vous pouvez facilement observer cela avec l'outil de surveillance en top . Si le champ nice (NI) n'est pas affiché par défaut, vous pouvez l'append en appuyant sur f et en choisissant I Cela appenda la colonne NI à l'affichage 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 

Bonne information de l' man 2 fork

fork () crée un nouveau process en dupliquant le process appelant. Le nouveau process, appelé l'enfant, est une copy exacte du process appelant, appelé parent, à l'exception des points suivants:

  • L'enfant a son propre ID de process unique et ce PID ne correspond pas à l'ID d'un groupe de process existant (setpgid (2)).
  • L'ID de process parent de l'enfant est le même que l'ID de process du parent.
  • L'enfant n'hérite pas des verrous memory de ses parents (mlock (2), mlockall (2)).
  • Les utilisations des ressources de process (getrusage (2)) et les counturs de time CPU (time (2)) sont remis à zéro dans l'enfant.
  • L'set des signaux en attente de l'enfant est initialement vide (sigpending (2)).
  • L'enfant n'hérite pas des ajustements de sémaphore de son parent (semop (2)).
  • L'enfant n'hérite pas des verrous d'logging de son parent (fcntl (2)).
  • L'enfant n'hérite pas des minuteurs de son parent (setitimer (2), alarm (2), timer_create (2)).
  • L'enfant n'hérite pas des opérations d'E / S asynchronouss exceptionnelles de son parent (aio_read (3), aio_write (3)) et n'hérite aucun des contexts d'E / S asynchronouss de son parent (voir io_setup (2)).