특정 시스템의 특정 코어에서만 실행할 수 있도록 Linux 프로세스를 제한 할 수 있습니까?


10

쿼드 코어 상자와 각각 10 개의 스레드가있는 4 개의 동일한 프로세스가 있다고 가정 해 봅시다. Linux에서 프로세스 A는 CPU 0에서만 실행되고 프로세스 B는 CPU 1에서만 실행될 수 있다고 말할 수 있습니까?

답변:


16
taskset <affinity mask> -p <process>

taskset 1 -p 12345

프로세서 / 코어 1 만 사용하도록 프로세스 12345를 설정하려면

비트 마스크는 목록 (즉, 4+ 코어 시스템의 코어 1 3 및 4를 사용하기 위해 1,3,4) 또는 16 진수 (0 코어 만 0의 경우 1,3,4, 0x00000001)의 비트 마스크 일 수 있습니다.

taskset일반적으로이라는 패키지에 shedutils있습니다.

편집 : 거의 잊어 버렸습니다 ... 기존 프로세스에서 새 명령의 선호도를 변경하지 않고 설정하려면 다음을 사용하십시오.

taskset <mask> <program> [<arg1>]...[<argN>]

1

taskset (util-linux 2.13-pre7) 사용법 : taskset [옵션] [마스크 | cpu-list] [pid | cmd [args ...]] 프로세스의 선호도를 설정하거나 얻습니다.

-p, --pid는 기존의 주어진 pid에서 작동합니다. -c, --cpu-list 표시하고 목록 형식으로 cpus를 지정합니다. -h, --help이 도움말을 표시합니다. -v, --version 출력 버전 정보

기본 동작은 새로운 명령을 실행하는 것입니다 : taskset 03 sshd -b 1024 기존 작업의 마스크를 검색 할 수 있습니다 : taskset -p 700 또는 설정 : taskset -p 03 700 목록 형식은 쉼표로 구분 된 목록 대신 쉼표로 구분 된 목록을 사용합니다 마스크 : taskset -pc 0,3,7-11 700 목록 형식의 범위는 큰 인수를 취할 수 있습니다. 예를 들어 0-31 : 2는 마스크 0x55555555와 같습니다.

필요에 따라 항상 서버를 최적화 할 수 있습니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.