Bash 스크립트에 다음 코드가 있습니다.
echo "bash pid => $$";
echo "processor affinity before => $(taskset -p $$)"
taskset -cp ${AN_INTEGER} $$
echo "processor affinity after => $(taskset -p $$)"
나는 다음과 같은 결과를 얻습니다.
processor affinity before => pid 5047's current affinity mask: ff
pid 5047's current affinity list: 0-7
pid 5047's new affinity list: 1
processor affinity after => pid 5047's current affinity mask: 2
이게 무슨 뜻인지 아는 사람 있나요?
내가 프로세서 선호도를 조작하기 시작한 이유는 여러 개의 bash 하위 프로세스를 시작하고 모든 bash 하위 프로세스 선호도 값이 "ff"이므로 모두 동일한 CPU를 대상으로 하는 것처럼 보였기 때문입니다.
답변1
taskset
마스크를 사용하여 프로세스가 실행될 수 있는 CPU를 지정합니다. 각 비트는 CPU에 매핑됩니다. 비트가 1로 설정되면 프로세스가 해당 CPU에서 실행될 수 있지만 0으로 설정되면 실행할 수 없습니다. 따라서 마스크 FF는 0부터 7까지의 모든 CPU(특정 CPU 아님)를 나타내고 마스크 2는 CPU 1만 나타냅니다.