[Linux] 특정 Core에 Task(Job) Scheduling 하기 (taskset)

실험환경

  • OS: Ubuntu 18.04

Linux에 실행되는 Process를 특정 Core에 Scheduling 해야 하거나 현재 실행되고 있는 Process가 몇 번 Core에서 실행되고 있는지 등을 확인하고 싶을 때 “taskset” 명령어를 사용하면 된다. 아래 자주 사용하는 옵션을 정리하였다. 더 많은 옵션은 출처 1에서 확인 할 수 있다.

PID_NUMBER 연산을 수행하고 있는 Core 번호 확인 (결과는 16진수로 표시됨)

  • $taskset -p PID_NUMBER

새로 생성되는 Process (Job)을 특정 Core에 Scheduling 하기

  • $taskset -c CORE_ID CMD
  • CORE_ID 예제: 0, 1, 4 또는 0-4 또는 1
  • CMD 예제: gcc main.cpp 등

현재 실행 중인 Process (Job)을 다른 Core로 변경하기

  • $taskset -cp CORE_ID PID_NUMBER

개인적으로 위 3개의 명령어를 많이 사용한다. 아래 그림 1은 새롭게 실행되는 Process를 3번 Core에 할당하도록 한 후 htop 화면을 캡처한 사진이다. 3번 Core에서 실행하도록 하면 4번 Core가 100%로 동작하고 있는 것을 확인 할 수 있다. taskset은 Core Index가 0번에서 시작하고 htop의 경우 Core Index가 1번에서 시작하기 때문에 3과 4는 같은 Core를 의미한다.

그림 1: taskset 명령어 실행 화면

출처

  1. http://coffeenix.net/board_view.php?bd_code=1702

Leave a Comment