2010년 3월 3일 수요일

[GNS3] 메모리 및 CPU 사용량

메모리 및 CPU 사용량

여러개의 디바이스를 사용하여 토폴로지를 생성할 때 메모리와 CPU 사용량이 문제가 된다. CPU 사용량 문제를 다루기 위해서는 idle-pc 값을 고려해야 한다. 이 수치는 PC가 아닌 IOS 버전에 따라 달라진다. 메모리 문제를 다루기 위해서는 ghostios와 sparsemem이 고려되어야 한다.

메모리 사용량

시뮬레이션 과정에서 많은 양의 (실질 혹은 가상) 메모리가 사용된다. ghostios와 sparsemem 옵션이 이들 문제를 다루기 위해 사용된다.

ghostios는 동일한 IOS 이미지를 사용하는 라우터를 여러개 사용하는 랩 환경에서 필요한 메모리양을 크게 낮추어준다. 이 옵션을 켜면 각 라우터가 사용하는 IOS 모두를 가상메모리에 복사하지 않고 이들을 사용할 수 있도록 하나의 공유 영역에 복사하여 라우터가 공유할 수 있도록 한다. 예를 들면 60MB의 동일한 IOS 이미지를 사용하는 10개의 라우터를 실행한다면 랩 환경에서 9*60=540MB의 메모리를 절약할 수 있다. ghostios는 디폴트로 설정되어 있다.


sparsemem은 물리적 메모리의 사용량을 낮추는 것은 아니지만 라우터가 사용하는 가상 메모리의 사용량을 줄인다. 이는 단일 프로세스가 사용할 수 있는 메모리는 32비트 윈도우에서는 2 GB, 32비트 리눅스에서는 3 GB로 제한되기 때문에 매우 중요하다. sparsemem 옵션을 설정하여 라우터의 IOS가 돌아가는 호스트의 가상 메모리를 할당한다. 이로 인해 더 많은 라우터를 사용할 수 있는 것이다.

이 두 기능 모두 mmap에 의존하기 때문에 반드시 설정되어 있어야 한다. GNS3의 Edit>Preferences 메뉴로 접근하여 이들 기능을 설정한다.

CPU 사용량
 
idlepc 값을 결정하는 방법에 대해 설명할 때 이미 CPU 사용량에 관해 언급하였다. idlepc 값을 설정하지 않고서는 자신의 CPU 사용량이 100%로 치솟는 것을 보았을 것이다. 이는 GNS3와 함께 실행되는 코어 에뮬레이터인 Dynamips가 언제 가상 라우터가 idle 상태이고 동작상태인지 구별할 수 없기 때문이다. "idlepc" 명령으로 IOS 프로세스가 idle 루프 상태인 지점을 찾기 위해 실행 중인 이미지를 분석한다. 계산된 수치를 적용하게 되면 Dynamips는 idle 루프가 실행될 때 가상 라우터를 슬립상태로 만든다. 이로 인해 가상 라우터의 성능을 저하시키지 않고 CPU 소비를 크게 줄일 수 있다.
 
idlepc 값은 IOS 이미지에 따라 다르다. 이 수치는 IOS 버전에 따라 달라지며 동일한 버전이라도 다른 기능의 IOS별로도 서로 다르다. 하지만 idlepc 값은 GNS3를 실행하는 PC, 운영체제, Dynamips의 버전에 따라 달라지지는 않는다. Dynamips가 idlepc 값을 찾지 못할 수 있으며 또는 계산된 수치가 동작하지 않을 수 있다. 이럴 경우에는 다시 구해보기 바란다.
 
IOS의 idlepc 값을 결정하기 위해서는 GNS3를 실행한다. 구하고자 하는 IOS 이미지를 설정한 라우터를 끌어 놓은 다음 오른쪽 클릭하여 Start를 선택한다. 그런 후 오른쪽 클릭하여 Console을 선택한다. 초기 Console 화면에서 Enter를 입력해야할 수도 있다. "Would you like to enter the initial configuration dialog?"라고 물어오면 no를 입력한다. Router> 프롬프트가 뜰때까지 기다리며 그동안 몇 차례 Enter를 입력해야하기도 한다.
 

Router> 프롬프트가 뜬 후 GNS3 메인창으로 돌아간다.
 

R0 아이콘에서 오른쪽 클릭한 후 Idle PC를 선택한다. GNS3는 idlepc 값을 계산 한 후 산출된 값을 아래와 같이 화면에 표시한다. 드롭 다운 메뉴를 클릭하면 산출된 idlepc 값들을 볼 수 있을 것이다. 적합한 idlepc 수치라고 여겨지는 값에 '*'가 표시된다. '*'가 표시된 값 중 하나를 선택한 후 OK를 클릭한다.(아래 예에서는 4번을 선택하였다.)
 

idlepc 값이 적용되었다고 확인 메시지가 나타날 것이다.


 
Edit 메뉴에서 IOS images and hypervisors를 선택한 후 IOS images 탭 화면에서 해당 이미지를 더블클릭하면 설정된 idlepc 값이 'Settings'에 표시될 것이다.
 
idlepc 수치를 찾을 때 CPU 사용량을 모니터링하는 것도 좋은 생각이다. 윈도우에서 CPU 사용량을 보기위해서 Ctrl+ALT+DEL을 누른 후 Task Manager를 선택한다. CPU 사용량을 보기 위해 Performance 탭을 선택한다.
 

Ubuntu에서는 System 메뉴의 Administration 아래의 System Monitor를 선택한다.


idlepc 값이 설정되지 않은 상태에서 CPU 사용량은 100% 가깝게 치솟을 것이다. 하지만 idlepc 값을 설정하면 CPU 사용량은 매우 낮을 값으로 떨어질 것이다. 여러 수치를 적용하여 CPU 사용량이 가장 낮은 값으로 동작하는 수치를 선택한다.

댓글 없음:

댓글 쓰기