프로그램이 아직 실행되지 않을 때 작업 세트는 어떻게 PID를 생성합니까?

프로그램이 아직 실행되지 않을 때 작업 세트는 어떻게 PID를 생성합니까?

처리 능력을 머신의 단일 코어로 제한하고 싶었기 때문에 taskset아래와 같이 단일 코어(예: Core 0)를 설정하는 것이 도움이 된다는 것을 알았습니다(제공됨).답변):

taskset -c 0 -p 45678

문제는 내 프로그램이 아직 실행되지 않을 때 여기서 process_id pid를 어떻게 확인할 수 있느냐는 것입니다. 이 경우 Linux에서 선택한 임의의 프로세스 ID를 설정하면 됩니까 45678? 그렇다면 쉘 스크립트에서 다음을 수행할 수 있습니까?

#!/bin/sh
# Set the processing unit
taskset -c 0 -p 45678

# run python script
python main.py

답변1

taskset향후 프로세스에 대한 기록 설정을 호출할 수 없습니다 . 이 호출 방법은 taskset현재 실행 중인 프로세스에만 적용됩니다.

새 프로세스를 코어에 고정하려면 taskset직접 모드를 호출하세요. 전화해서 taskset실행할 프로그램을 알려줍니다.

taskset -c 0 python main.py

작동 방식은 다음과 같습니다.

  1. 쉘(또는 다른 호출 프로그램)은 새로운 프로세스(fork) 구현하다(execve) taskset -c 0 python main.py.
  2. 실행 중인 프로세스는 taskset핵심 설정을 자신에게 적용합니다.
  3. 프로세스는 동일한 프로세스에서 (다시) 실행됩니다 execve.python main.py

이는 다른 프로세스별 설정을 수행하는 방법입니다. 셸 세션에 대한 환경 변수를 설정하는 env대신(예: 사용) 개별 export프로세스에 대한 환경 변수를 설정(예: 사용), 사용하는 대신 nice, 리디렉션(일반적으로 셸 구문으로 수행)을 사용합니다. 별도의 유틸리티 프로그램) 등

관련 정보