다중 코어 처리에는 장점과 단점이 있을 수 있으며, 최상의 성능을 얻으려면 때때로 CPU 코어를 프로그램에 수동으로 할당해야 합니다(일명 "CPU 선호도"). Linux에서 기본 도구는 taskset입니다. 무섭게 들릴 수 있지만 프로세스를 단순화하기 위해 쉬운 단계로 나누어 보겠습니다.
작업 세트 기본 사항
taskset을 사용하는 것은 시작할 프로그램과 이미 실행 중인 프로그램과의 CPU 친화도의 두 부분으로 나눌 수 있습니다. 프로그램 시작은 둘 중 더 쉽기 때문에 시작하겠습니다. 실행 명령은 다음과 같습니다.
taskset -c cpu-core-number(s) application
할당하려는 CPU 코어의 번호를 입력하기 전에 Unix 번호 지정 체계는 일반적으로 0에서 시작하므로 첫 번째 코어는 0, 두 번째 코어는 1이 되는 식이라는 것을 잊지 마십시오. 따라서 듀얼 코어 시스템에는 코어 0과 1이 있고 쿼드 코어 시스템에는 코어 0, 1, 2, 3이 있습니다.
듀얼 코어 시스템에서 Audacity를 실행하고 두 번째 코어에서 실행하기를 원한다고 가정해 보겠습니다. 해당 명령은 다음과 같습니다.
taskset -c 1 audacity
다중 코어 사용
우리 컴퓨터 중 하나에서 Chrome은 비디오를 스트리밍할 때 프레임을 드롭하는 경우가 있지만 두 개의 코어에 할당되면 자체적으로 작동합니다. 쿼드 코어 시스템에서 동일한 작업을 시도하고 Chrome을 코어 3 및 4에 할당하려는 경우 명령은 다음과 같습니다.
taskset -c 2,3 google-chrome
CPU 선호도를 순차적 코어에 할당할 필요가 없습니다. 임의의 코어를 선택할 수 있습니다. 6코어 머신이 있고 코어 2와 6에서 Chrome을 사용하려고 한다고 가정해 보겠습니다. 다음 명령을 입력합니다.
taskset -c 1,5 google-chrome
대시를 사용하여 여러 코어에 애플리케이션을 분산할 수도 있습니다. 예를 들어, 많은 오래된 프로그램이나 시스템 기능은 기본적으로 첫 번째 코어에 있습니다. 다른 모든 코어에 대규모 애플리케이션을 분산시키면서 첫 번째 코어를 가능한 한 무료로 유지하려면 어떻게 하시겠습니까?
8코어 시스템이 있고 두 번째 코어에서 여덟 번째 코어까지 Steam을 실행하려고 한다고 가정해 보겠습니다. 해당 명령은 다음과 같습니다.
taskset -c 1-7 steam
이미 시작된 프로그램의 선호도 변경
Taskset은 단순히 응용 프로그램을 시작하는 것으로 제한되지 않습니다. 이미 실행 중인 프로그램의 CPU 선호도를 변경할 수도 있습니다. 그러나 애플리케이션의 선호도를 변경하려면 먼저 프로세스 ID(또는 줄여서 PID)를 알아야 합니다.
애플리케이션의 PID를 찾으려면 데스크톱의 시스템 모니터를 사용해 볼 수 있지만 가장 빠른 방법은 top
을 사용하는 것입니다. . 당연히 다음 명령을 사용합니다.
top
실행 중인 모든 명령의 이름은 화면 오른쪽에 있습니다. 해당 프로세스 ID는 왼쪽에 있습니다.
잠시 후 사용할 PID를 적어 두십시오. 이 예에서는 6개의 코어가 있는 구형 PC에서 고화질 Matroska 비디오를 재생하는 도중에 VLC를 사용합니다. VLC에서 최고의 성능을 끌어내기 위해 다양한 CPU 친화도를 실험하고 있습니다.
기존 프로세스의 선호도를 변경하는 구문은 다음과 같습니다.
taskset -cp core-numbers PID
위의 스크린샷을 볼 수 있다면 VLC의 프로세스 ID는 20485입니다. 우리는 네 번째, 다섯 번째, 여섯 번째 코어에서 VLC를 실행하려고 합니다. Unix 번호는 3-5입니다. 그 후 명령은 다음과 같습니다.
taskset -cp 3-5 20485
하지만 변경하기 전에 기존 선호도를 확인하려면 어떻게 해야 할까요? 이를 위해 핵심 번호를 입력하지 마십시오. 그러면 taskset에서 선호도가 할당되는 방식을 알려줍니다. 따라서 마지막 명령을 다음과 같이 변경하면
taskset -cp 20485
VLC가 모든 코어에 걸쳐 있음을 보여줍니다.
다른 프로그램으로 다시 시도해보자. 대신 SMPlayer로 대형 Matroska를 실행하고 SMPlayer가 이미 출시되었다고 가정해 보겠습니다. Top은 PID가 16058이라고 말합니다.
그러나 먼저 기존 친화성을 알고 싶습니다. -cp
와 함께 명령 사용 스위치는 있지만 코어 번호가 없는 경우 선호도가 현재 모든 코어에 분산되어 있음을 알 수 있습니다.
이제 다음 명령을 사용하여 VLC 실험과 동일한 3개의 코어에 SMPlayer를 배포할 수 있습니다.
taskset -cp 3-5 16058
그건 쉽죠, 그렇죠? PC를 벤치마킹하려는 경우 CPU 스트레스 테스트를 위한 8가지 유용한 도구에 대한 가이드를 확인하십시오.