Skip to content

TaskSet 으로 Process의 사용 CPU를 지정해 보자!

조회 수 10272 추천 수 0 2012.06.18 17:14:05
■ 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 지정을 변경하였을 때 입니다.


유용한 정보 되시기를 바랍니다.
profile

일요일은 짜빠게뤼~ 먹는날~^^

엮인글 :
http://adminplay.com/104471/42c/trackback
List of Articles
번호 제목 글쓴이 날짜 조회 수sort

도메인 Status 상태별 설명 안내

HDD Guardian (a graphical user interface for smartctl)

dpkg 사용법

top 화면 내용중 load average와 PRI : priority(우선순위...

ubuntu 10.04 에서 Nginx, Mysql, PHP5

HP 서버 disk 증설 (hpacucli 사용)

리눅스 메모리 관리, 왜 메모리 여유공간이 없을까? (top ...

windows smartctl

ZFS 파일에 ACL 설정

make 정리

SSL 패스워드 삭제 하기

EXT4 파일 시스템을 Btrfs 파일 시스템으로 변환하기

tar 압축을 실수로 디렉토리 생성 안하고 풀었을때 대처법

ll 명령시 날짜 전체가 보이도록 하기

hddtemp와 mrtg를 이용한 하드디스크 온도 체크 file

python과 mysql 연동시 libmysqlclient_r.so.* 에러가 날 ...

linux 커널 파라메터 수정

우분투(Ubuntu) ssh 설정하기

error: Hm, kex protocol error: type 30 seq 1 [preauth]... file

운영중인 Linux 서버에서 NTFS 파일 시스템 삭제하기

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234