좋은 프로세스와 하위 프로세스

좋은 프로세스와 하위 프로세스

nice레벨 지정과 하위 프로세스 사이의 관계가 무엇인지 말해 줄 수 있는 사람이 있습니까?

예를 들어 기본값이 이고 nice일부 하위 프로세스(이 경우 약 20개의 병렬 프로세스)를 시작하는 0스크립트를 실행하는 경우 nice 5하위 프로세스의 이점은 무엇입니까?

답변1

하위 프로세스는 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))가 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) 참조).

관련 정보