솔라리스10 08/07 버전 부터 존의 리소스를 직접 컨트롤할 수 있습니다.
이 글은 그 방법에 대해 설명합니다.
솔라리스10 08/07 버전 부터 유저들은 존의 리소스 컨트롤을 직접 설정할 수 있습니다. 예를 들어 존이 사용할 CPU 의 숫자를 설정할 수 있고 혹은 CPU 의 갯수를 범위로 지정할 수도 있습니다. 또한 존의 물리적, 스왑, 그리고 락 메모리도 지정할 수 있습니다. 이 글은 리소스 컨트롤 지정에 도움이 될만한 정보들을 제공 합니다.
1. cpu-shares 를 사용하여 존의 컴퓨팅 자원들을 조정합니다.
비록 솔라리스10 08/07 버전이 존에서 사용될 CPU 의 갯수를 지정할 수 있도록 허락하더라도 종종 이것이 잘 동작하지 않을때가 있습니다. 예를 들어 8-코어의 썬 파이어 T2000 서버에서 3개의 존에 dedicated-cpu 를 사용한다고 해 봅시다. 각각의 존은 4-20 의 지정된 ncpus 를 서로 다른 중요도 값으로 지정되어 있습니다. 그러나 시스템이 완전히 사용되고 있을때 중요도 값이 항상 자기가 맡은 역활대로 동작하지는 않습니다. 종종 낮은 중요도 값의 존이 높은 중요도 값의 존 보다 더 많은 컴퓨팅 리소스를 소비할 때도 있습니다.
다음의 예에서 필자는 cpu-shares 가 잘 동작함을 데모로 보여드립니다.
root@bigfoot# dispadmin -d
FSS (Fair Share)
root@bigfoot# zonecfg -z global info rctl
rctl:
name: zone.cpu-shares
value: (priv=privileged,limit=4,action=none)
root@bigfoot# zonecfg -z bighead info rctl name=zone.cpu-shares
rctl:
name: zone.cpu-shares
value: (priv=privileged,limit=3,action=none)
root@bigfoot# zonecfg -z bighand info rctl name=zone.cpu-shares
rctl:
name: zone.cpu-shares
value: (priv=privileged,limit=3,action=none)
bighead 에 20개의 프로세스를 생성해 보겠습니다:
<username>@bighead> perl -e 'while (--$ARGV[0] and fork) {}; while () {}'
20 &
bighand 에 12개의 프로세스를 생성해 보겠습니다:
<username>@bighand> perl -e 'while (--$ARGV[0] and fork) {}; while () {}'
12 &
root@bigfoot# vmstat 3 3
kthr memory page disk faults
cpu
r b w swap free re mf pi po fr de sr s1 s2 s3 s4 in sy
cs us sy id
4 0 0 37954888 15215072 66 206 259 1 1 0 60 13 -0 -0 24 818 4186
1780 64 0 36
0 0 0 38747216 15152224 0 5 0 0 0 0 0 0 0 0 0 768 272
339 100 0 0
0 0 0 38746960 15151968 0 0 0 0 0 0 0 0 0 0 0 788 247
347 100 0 0
root@bigfoot# prstat -Z
ZONEID NPROC SWAP RSS MEMORY TIME CPU ZONE
1 55 202M 264M 1.6% 0:36:11 62% bighead
2 47 199M 263M 1.6% 0:20:29 37% bighand
0 49 219M 291M 1.8% 0:01:36 0.1% global
위에서 보듯이 시스템은 완벽하게 사용되고 있지 않고, 각각의 존은 필요한대로의 컴퓨팅 리소스를 사용하고 있습니다.
이제 존 bigfoot 에 15개의 프로세스를 생성해서 bighead 와 bighand 존이 얼마나 자원을 소모하고 있는지 살펴 보겠습니다:
root@bigfoot# perl -e 'while (--$ARGV[0] and fork) {}; while () {}'
15 &
root@bigfoot# vmstat 3 3
kthr memory page disk faults
cpu
r b w swap free re mf pi po fr de sr s1 s2 s3 s4 in sy
cs us sy id
5 0 0 37520616 15249888 102 314 406 1 1 0 94 13 -0 -0 24 869 6466
2592 50 1 49
15 0 0 38745928 15151392 0 5 0 0 0 0 0 1 0 0 0 806 325
366 100 0 0
15 0 0 38745672 15151136 0 0 0 0 0 0 0 0 0 0 0 739 234
320 100 0 0
root@bigfoot# prstat -Z
ZONEID NPROC SWAP RSS MEMORY TIME CPU ZONE
0 65 228M 298M 1.8% 1:32:55 40% global
1 55 202M 264M 1.6% 1:59:48 30% bighead
2 47 199M 263M 1.6% 1:37:32 29% bighand
root@bigfoot# prstat -Z
ZONEID NPROC SWAP RSS MEMORY TIME CPU ZONE
0 65 228M 298M 1.8% 1:19:15 38% global
2 47 199M 263M 1.6% 1:27:31 31% bighand
1 55 202M 264M 1.6% 1:48:24 31% bighead
위에서 보듯이 각각의 존은 그것의 cpu-shares 에 맞게 컴퓨팅 자원의 일부분을 소모하고 있고 시스템의 컴퓨팅 리소스들이 완전히 사용되고 있습니다.
2. capped-memory 의 swap 프로퍼티는 가상 swap 공간이고 물리적인 swap 공간이 아닙니다.
bighead 존에서는 오라클 데이타베이스 10g 엔터프라이즈 에디션이 전체 2Gbyte 의 메모리로 실행되고 있습니다 (1.5Gbyte SGA 와 0.5Gbytes PGA). 우리는 여기에 최대 3Gbytes 의 메모리와 1.5Gbytes 의 스왑 공간을 다음과 같이 주고 싶다고 해 보면:
zonecfg:bighead> info capped-memory
capped-memory:
physical: 3G
[swap: 1.5G]
존 bighead 에서 오라클 데이타베이스를 시작시킵니다:
oracle@bighead> sqlplus /nolog SQL> conn / as sysdba SQL& startup ORA-27102: out of memory SVR4 Error: 12: Not enough space
그러므로 여기서 swap 은 물리 swap 공간이 아닙니다. 썬의 문서에 따라서 여기서의 swap 은 유저 프로세스 공간 매핑에 의해 사용될 수 있는 전체 swap 의 양을 의미하며 tmpfs 에 마운트 됩니다. swap 을 설정할때 capped-memory swap 은 적절하게 설정되어야 합니다. 예를 들어:
<username>@bigfoot> vmstat -p 5 memory page executable anonymous filesystem swap free re mf fr de sr epi epo epf api apo apf fpi fpo fpf 38671464 15156336 40 77 1 0 5 1442 0 0 242 0 0 44 1 1 38875352 15312016 0 3 0 0 0 0 0 0 0 0 0 0 0 0
우리의 경우 3 * ( 38 / 15 ) 즉 7Gbtes 가 되어야 합니다.
3. 종종 존은 최대 제한 보다 더 많은 물리적 메모리를 소모 합니다.
zonecfg:bighead> info capped-memory capped-memory: physical: 1G [swap: 7G] [locked: 1G]
오라클 데이타베이스는 시작시키는데에 꽤 오랜 시간이 걸립니다. 존에 의해 사용되는 Resident Set Size (RSS) 메모리는 다음과 같이 오락가락 합니다:
# prstat -Z ZONEID NPROC SWAP RSS MEMORY TIME CPU ZONE 36 54 1824M 158M 1.0% 0:01:54 0.5% bighead 36 54 1824M 1779M 11% 0:01:59 0.3% bighead 36 55 1828M 258M 1.6% 0:02:01 0.6% bighead 36 55 1829M 1788M 11% 0:02:13 0.3% bighead
그러나 1779 Mbytes 는 1 Gbyte 보다는 훨씬 많은 용량입니다. 썬은 이미 이 버그에 대해 알고 있습니다.
이 글의 영문 원본은
BigAdmin System Administration Portal의 Community-Submitted Tech Tips 에서 보실 수 있습니다.
"관리자코너" 카테고리의 다른 글
- 맥북 13인치 코어 2 듀오에 솔라리스10 설치하기 (댓글 2개 / 트랙백 0개) 2008/06/16
- 썬 버추얼 데스크탑 커넥터 1.0(베타)을 사용한 VDI 데모 구축 (댓글 0개 / 트랙백 0개) 2008/01/23
- 솔라리스 Tip Of The Week:SMF (댓글 0개 / 트랙백 0개) 2009/01/23
- GlassFish 를 프로덕션 환경으로 설치하기 (댓글 0개 / 트랙백 0개) 2009/11/23
- 솔라리스 레디 애플리케이션 및 솔루션 (댓글 0개 / 트랙백 0개) 2008/03/13
- 솔라리스 10 에서 TCP Wrapper 사용하기 (댓글 1개 / 트랙백 0개) 2006/01/23
- 시만텍 베리타스 넷백업과 ZFS 스냅샷 통합하기 (댓글 0개 / 트랙백 0개) 2009/07/17
- ZFS, 썬의 최신 파일 시스템(Part 1: 스토리지 무결성, 보안성 및 확장성) (댓글 3개 / 트랙백 1개) 2006/11/23
- USB로 부팅하기 - 설치 (댓글 31개 / 트랙백 1개) 2007/08/20
- 파일과 디렉토리를 안전하게 옮기거나 카피 할 수 있는 방법 (댓글 6개 / 트랙백 0개) 2007/04/23
댓글을 달아 주세요