글 수 367
■ Taskset 이란?
TaskSet은 프로세스가 사용할 CPU(CPU affinity) 를 보여주거나 지정해준다.
■ 사용 방법
taskset [options] [mask | list ] [pid | command [arg]...]
mask는 Process가 사용할 CPU 값을 나타내며 16진수로 표현이 된다.
0x00000001 는 0번 프로세스(CPU)의 사용을 나타내며
0x00000003 는 0번과 1번 프로세스(CPU)의 사용을 나타내며
0xFFFFFFFF 는 모든 프로세스(CPU)의 사용을 나타냅니다.(0 ~ 31번..)
물론, mask를 프로세서(CPU)의 숫자로 표현할 수도 있다. mask를 프로세서(CPU)의 숫자로 나타내기 위해서는 주요 옵션의 "-c, --cpu-list " 옵션을 사용해주면 된다.
■ 주요 옵션
-p, --pid
operate on an existing PID and not launch a new task
-c, --cpu-list
specifiy a numerical list of processors instead of a bitmask.
The list may contain multiple items, separated by comma, and
ranges. For example, 0,5,7,9-11
* 위의 옵션들은 보여주간, 세팅할때 동일하게 사용되어 진다.
■ 명령어의 다양 한 예
1) 해당 프로세스의 지정된 CPU 보기 (CPU affinity)
# taskset -p pid
====================
# taskset -p 4444
pid 4444's current affinity mask: 9 <-- -c 옵션이 없으면 mask는 16진수로 나온다.
# taskset -pc 4444
pid 4444's current affinity list: 0,3 <-- -c 옵션을 넣으니 cpu number 로 표현.
=====================
2) 해당 프로세스의 지정된 CPU 변경 하기
# taskset -pc "processor number" pid
====================
# taskset -pc 0-7 4444 <-- 0,3 // 0-7(0,1,2,3,4,5,6,7) 형태로 지정 할수 있다.
pid 4444's current affinity list: 0,3
pid 4444's new affinity list: 0-7
(16 진수는 보기 힘드니 예제에서 제외)
====================
3) command 사용하여 구동시 변경하기
# taskset -c "process nuber" "command"
=====================
# taskset -c 0,1,2,3,4 /etc/init.d/httpd start
실지로는 -pc 옵션을 써도 정상적으로 구동된다.)
=====================
■ 고려 사항
1) 자식 Process 에 해당 설정 승계 여부
* 부모의 정보를 그대로 따라 갑니다.
단, 해당 CPU의 지정전에 구동된 자식 프로세스의 설정은 변경되지 않습니다.
혹, 변경전에 구동된 자식 프로세스가 있다면 같이(일일이) 변경해 줘야 합니다.
** taskset -c "process nuber" "command" 형태로 구동하였을때에는 상관 없습니다. 여기서 문제시 되는 것은 구동 후에 CPU 지정을 변경하였을 때 입니다.
유용한 정보 되시기를 바랍니다.
TaskSet은 프로세스가 사용할 CPU(CPU affinity) 를 보여주거나 지정해준다.
■ 사용 방법
taskset [options] [mask | list ] [pid | command [arg]...]
mask는 Process가 사용할 CPU 값을 나타내며 16진수로 표현이 된다.
0x00000001 는 0번 프로세스(CPU)의 사용을 나타내며
0x00000003 는 0번과 1번 프로세스(CPU)의 사용을 나타내며
0xFFFFFFFF 는 모든 프로세스(CPU)의 사용을 나타냅니다.(0 ~ 31번..)
물론, mask를 프로세서(CPU)의 숫자로 표현할 수도 있다. mask를 프로세서(CPU)의 숫자로 나타내기 위해서는 주요 옵션의 "-c, --cpu-list " 옵션을 사용해주면 된다.
■ 주요 옵션
-p, --pid
operate on an existing PID and not launch a new task
-c, --cpu-list
specifiy a numerical list of processors instead of a bitmask.
The list may contain multiple items, separated by comma, and
ranges. For example, 0,5,7,9-11
* 위의 옵션들은 보여주간, 세팅할때 동일하게 사용되어 진다.
■ 명령어의 다양 한 예
1) 해당 프로세스의 지정된 CPU 보기 (CPU affinity)
# taskset -p pid
====================
# taskset -p 4444
pid 4444's current affinity mask: 9 <-- -c 옵션이 없으면 mask는 16진수로 나온다.
# taskset -pc 4444
pid 4444's current affinity list: 0,3 <-- -c 옵션을 넣으니 cpu number 로 표현.
=====================
2) 해당 프로세스의 지정된 CPU 변경 하기
# taskset -pc "processor number" pid
====================
# taskset -pc 0-7 4444 <-- 0,3 // 0-7(0,1,2,3,4,5,6,7) 형태로 지정 할수 있다.
pid 4444's current affinity list: 0,3
pid 4444's new affinity list: 0-7
(16 진수는 보기 힘드니 예제에서 제외)
====================
3) command 사용하여 구동시 변경하기
# taskset -c "process nuber" "command"
=====================
# taskset -c 0,1,2,3,4 /etc/init.d/httpd start
실지로는 -pc 옵션을 써도 정상적으로 구동된다.)
=====================
■ 고려 사항
1) 자식 Process 에 해당 설정 승계 여부
* 부모의 정보를 그대로 따라 갑니다.
단, 해당 CPU의 지정전에 구동된 자식 프로세스의 설정은 변경되지 않습니다.
혹, 변경전에 구동된 자식 프로세스가 있다면 같이(일일이) 변경해 줘야 합니다.
** taskset -c "process nuber" "command" 형태로 구동하였을때에는 상관 없습니다. 여기서 문제시 되는 것은 구동 후에 CPU 지정을 변경하였을 때 입니다.
유용한 정보 되시기를 바랍니다.