예전에 어디서 본것 같은데..
현재 리눅스 머신에 쿼드코어 CPU를 사용하고 있습니다.
VS-FTP와 MySQL, apache를 돌리는데요..
CPU core별로 프로세스를 돌리고 싶습니다.
예를 들어..
Core-0 = kernel
Core-1 = vs-ftp
Core-2 = mysql
Core-3 = apache
이유는 각 process의 자원을 CPU 코어별로 제한하기 위해서입니다.
thread는 process의 adress space가 할당된 core에서 동작해야합니다.
kernel의 스케줄 쪽을 보고 있는데.. 감이 잡히지 않네요..
관련된 프로그램이 있던 것으로 기억되는데 기억이 가물가물 하네요..
혹시 알고 계신분이 계실까 하여 글 남깁니다.
게시물의 성격에 맞지 않는다면 삭제 부탁 드립니다..
--
Google 그룹스 'sysadminstudy' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에 게시하려면 sysadm...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 sysadminstud...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/sysadminstudy?hl=ko에서 그룹을 방문하세요.
추가적으로 thread 의 경우는 부모 process의 값을 그대로 가져오는 것으로 알고 있습니다.
즉, taskset을 이용하여 설정시에 설정 이후에 생성된 자식 프로세스는 부모 프로세스의 값을 가져온다는 겁니다.
여기서 주의할 점은 부모의 CPU affinity 값을 변경하기 전에 생성된 자식 프로세스의 경우는 변경이 되지 않는다는 겁니
다.
즉, 부모 CPU affinity 를 변경하기 전에 생성된 프로세스들의 값 또한 같이 변경해줘야 완벽하게 변경이 이루어진다는 겁
니다.
예를 들면)
httpd 초기 데몬을 5하고 띄우면
(예를 들어 부모 pid를 4444 로 하겠습니다)
httpd 4444 1 httpd~~~~
httpd 9000 4444 httpd~~~~
httpd 9001 4444 httpd~~~~
httpd 9002 4444 httpd~~~~
httpd 9003 4444 httpd~~~~
초기 위와 같이 5개의 프로세스가 생성될 것입니다.
완벽하게 바꾸어주기 위해서는 해당 5개의 프로세스에 대하여 모두 CPU affinity 를 변경해야한다는 말입니다.
ex) CPU affinity 를 모두 0,3 으로 바꾸려면 taskset을 0,3 바꾸는 것을 5번 해야한다는 겁니다.
# taskset -pc 0,3 4444
# taskset -pc 0,3 9000
# taskset -pc 0,3 9001
# taskset -pc 0,3 9002
# taskset -pc 0,3 9003
예전에 이에 대해 테스트 한 적이 있는지라 간단하게 적어 봅니다.
On 3월4일, 오후3시00분, Donam Kim <don...@gmail.com> wrote:
> 안녕 하세요 김도남 입니다
>
> 실제 시험을 해보진 않았지만 taskset이라는 프로그램이 해당 기능을 하는것으로 알고 있습니다.
>
> 각 Process의 CPU affinity를 지정해주는 프로그램이었는대
>
> 혹시나 도움이 되실까 해서 답변 드립니다 ^-^
>
> 2010년 3월 4일 오전 10:43, armada <armada...@gmail.com>님의 말:
>
>
>
>
>
> > 안녕하세요. 최세영입니다.
> > 저번 세미나에서 강호의 고수님들을 뵙게 되었고 혹시나 도움을 받을 수 있을까 하는 마음에 글을 올려봅니다.
> > 처음부터 도움 받을 궁리만 하구.. 에궁~ OTL
>
> > 예전에 어디서 본것 같은데..
> > 현재 리눅스 머신에 쿼드코어 CPU를 사용하고 있습니다.
> > VS-FTP와 MySQL, apache를 돌리는데요..
> > CPU core별로 프로세스를 돌리고 싶습니다.
>
> > 예를 들어..
> > Core-0 = kernel
> > Core-1 = vs-ftp
> > Core-2 = mysql
> > Core-3 = apache
>
> > 이유는 각 process의 자원을 CPU 코어별로 제한하기 위해서입니다.
> > thread는 process의 adress space가 할당된 core에서 동작해야합니다.
>
> > kernel의 스케줄 쪽을 보고 있는데.. 감이 잡히지 않네요..
> > 관련된 프로그램이 있던 것으로 기억되는데 기억이 가물가물 하네요..
> > 혹시 알고 계신분이 계실까 하여 글 남깁니다.
>
> > 게시물의 성격에 맞지 않는다면 삭제 부탁 드립니다..
>
> > --
> > Google 그룹스 'sysadminstudy' 그룹에 가입했으므로 본 메일이 전송되었습니다.
> > 이 그룹에 게시하려면 sysadm...@googlegroups.com(으)로 이메일을 보내세요.
> > 그룹에서 탈퇴하려면 sysadminstud...@googlegroups.com<sysadminstudy%2Bunsu...@goog-legroups.com>로
> > 이메일을 보내주세요.
> > 더 많은 옵션을 보려면http://groups.google.com/group/sysadminstudy?hl=ko에서 그룹을
> > 방문하세요.
>
> --
> pub 1024D/0D7224EA 2007-07-16
> Key fingerprint = 7D57 003A 42DB 8321 8F83 0BA0 DCC9 7B72 0D72 24EA
> uid Donam Kim ( aka sCag ) <don...@gmail.com>- 원본 텍스트 숨기기 -
>
> - 원본 텍스트 보기 -
# 8283�̶�� pid�� bash�� ���μ��� id�Դϴ�.
$ ps -p 8283
PID TTY TIME CMD
8283 pts/7 00:00:00 bash
# 8283 pid�� cpu mask�� 3�̸� �̰��� (1 << 0 | 1 << 1) �� cpu 0�� 1�� �ƹ��ų� ����� �� �ִٴ� ���Դϴ�.
$ taskset -p 8283
pid 8283's current affinity mask: 3
#8283 pid�� cpu����ũ�� 01, (1<<0 ) �� cpu 0�� ���� �ֵ��� �����մϴ�.
$ taskset -p 01 8283
pid 8283's current affinity mask: 3
pid 8283's new affinity mask: 1
taskset -c 0 VirtualBox
실수로 작성자(LeeJungJun 님)분에게 보낸 내용은
========================
1. 좋은 정보 감사 드립니다.
taskset의 command 가 되는걸 새롭게 알았습니다.
ex) # taskset -pc 0,3 /etc/init.d/httpd start
식으로 command로 해보니 아주 잘 됩니다. 감사 드립니다.
(예전에 무식하게 테스트 했던 제가 부끄럽군요)
2. mask의 경우 -c 옵션으로 16진수가 아닌 프로세스의 넘버를 이용할 수 있다.
=======================
이렇게 보냈었네요.
다시 한번 좋은 정보 알려주신 LeeJungJun님 감사 합니다.
On 3월4일, 오후4시25분, LeeJongJun <juni071...@hotmail.com> wrote:
> ˰ԵǾ .
>
> ñ ؼ Ʈ غ ۸ غô ڷᰡ ֳ .
>
> ó :http://kldp.org/node/80208#comment-379848
>
> # 8283 ̶ pid bash μ id Դϴ .
> $ ps -p 8283
> PID TTY TIME CMD
> 8283 pts/7 00:00:00 bash
>
> # 8283 pid cpu mask 3 ̸ ̰ (1 << 0 | 1 << 1) cpu 0 1 ƹ ų ִٴ Դϴ .
> $ taskset -p 8283
> pid 8283's current affinity mask: 3
>
> #8283 pid cpu ũ 01, (1<<0 ) cpu 0 ֵ մϴ .
> $ taskset -p 01 8283
> pid 8283's current affinity mask: 3
> pid 8283's new affinity mask: 1
>
> ƿ ɾ Ҷ cpu ֳ . /etc/rc.local س ǰڳ .
>
> ó :http://kldp.org/node/110886
>
> taskset -c 0 VirtualBox
>
> մϴ .
>
>
>
>
>
> > Date: Wed, 3 Mar 2010 23:08:26 -0800
> > Subject: [sysadminstudy] Re: linux CPU Core per process Ѱ ?
> > From: armines...@smu.ac.kr
> > > > 쿡 Ż Ϸ sysadminstud...@googlegroups.com<sysadminstudy%2Bunsubscr...@goog-legroups.com>
> > > > ̸ ּ .
> > > > ɼhttp://groups.google.com/group/sysadminstudy?hl=ko
> > > > 湮 ϼ .
>
> > > --
> > > pub 1024D/0D7224EA 2007-07-16
> > > Key fingerprint = 7D57 003A 42DB 8321 8F83 0BA0 DCC9 7B72 0D72 24EA
> > > uid Donam Kim ( aka sCag ) <don...@gmail.com>- ؽ Ʈ -
>
> > > - ؽ Ʈ -
>
> > --
> > Google 콺 'sysadminstudy' 쿡 Ƿ ۵Ǿ ϴ .
> > 쿡 Խ Ϸ sysadm...@googlegroups.com( ) ̸ .
> > 쿡 Ż Ϸ sysadminstud...@googlegroups.com ̸ ּ .
> > ɼhttp://groups.google.com/group/sysadminstudy?hl=ko 湮 ϼ .
>
> _________________________________________________________________
> ģ 䱸 ϸ ϼ !http://im.msn.co.kr/im/main/mainFaqDetail.asp?seq=96&page=1&BbsCode=b...- 원본 텍스트 숨기기 -