| TaskSet 으로 Process의 사용 CPU를 지정해 보자! | 작성일 : 2010/03/04 17:48 |
| 조회수 : 34364 |
|
■ 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 지정을 변경하였을 때 입니다. 유용한 정보 되시기를 바랍니다. |
|||||||||
|
|