메인 컨텐츠로 가기

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

AIX의 성능 분석 도구를 사용하여 메모리 관련 문제점 해결하기

사례 연구

Saravanan Devendran, Architect-AIX Performance Tools, IBM  
Saravanan Devendran은 대학을 졸업한 1997년에 IBM에 입사했다. AIX 운영 체제 개발 분야에서 12년 경력을 보유하고 있는 그는 AIX의 다양한 서브시스템에 대한 업무를 맡아 왔으며 성능 도구에 대한 전문성도 갖추고 있다. tprof, mpstat 등과 같은 다양한 AIX용 성능 모니터링 도구를 개발했으며 현재는 AIX 운영 체제에 있는 성능 도구의 아키텍처를 맡고 있다.
Kiran Grover, Technical Leader-AIX Performance Tools, IBM  
Kiran Grover는 IT 업계 경력이 10년이며 현재는 IBM의 AIX Performance Tools Development Team 소속이다. 또한 수학 및 컴퓨터 공학 석사 학위를 보유하고 있다. 그녀는 떠오르는 아이디어를 놓치지 않고 메모하는 습관이 있고 지구 환경을 보호하는 데 관심이 있는 친환경론자이다.

요약:  시스템의 성능 지표는 시스템에 대한 기대 성능과 컴퓨터 시스템이 그러한 기대 성능을 충족하는 정도를 근간으로 합니다. 시스템 성능은 CPU, 메모리, 디스크 I/O, 네트워크 등에 따라 달라집니다. 애플리케이션의 CPU 사용량, I/O 사용률 및 메모리 사용량을 측정한 결과는 애플리케이션을 최적화할 때 매우 유용한 정보로 활용될 수 있습니다. 이 정보는 성능 병목 현상을 찾는 데도 도움이 되며 애플리케이션 성능뿐만 아니라 시스템 성능을 향상시키는 데도 사용됩니다. 또한, 이 정보를 이용하여 애플리케이션과 시스템의 성능을 개선할 수도 있습니다. 이 기사에서 소개하는 사례 연구에서는 고객이 경험한 메모리 관련 문제를 살펴보면서 문제점의 근본 원인을 단계별로 밝혀 나갑니다.

원문 게재일:  2009 년 7 월 28 일 번역 게재일:   2010 년 5 월 11 일
난이도:  초급 영어로:  보기 PDF:  A4 and Letter (163KB | 9 pages)Get Adobe® Reader®
페이지뷰:  4319 회
의견:  


문제점

특정 애플리케이션을 실행하면 메모리가 완전히 고갈된다는 사실을 알게 되었다. 이 애플리케이션은 시스템에서 실행 중인 유일한 프로세스였다. 또한, 서버에서 응답이 없어서 제한 시간이 자주 초과되었기 때문에 수동으로 트랜잭션을 처리해야 하는 문제점이 있었다.


문제점 분석 및 해결

처음에는 애플리케이션 때문에 메모리가 고갈된다고 생각했다. 그러나 성능 분석 도구를 사용하고 나서 이 생각이 바뀌었다.

인도 신화에는 Sanjeevini라고 하는 의학의 대가가 나오는데 그는 거의 모든 병을 치료할 수 있었다. topas는 모든 시스템 자원에 대한 개요를 제공하며 성능 분석을 시작하는 시점에서 사용되기 때문에 성능 분석 도구의 Sanjeevini라고 할 수 있다. 이 기사의 시나리오에서는 문제를 해결하기 위한 첫 번째 단계로 먼저 이러한 성능 분석 도구를 사용했다. 이 문제점을 처음 발견했을 때, 컴퓨터에서 사용 중인 총 메모리의 백분율이 topas에 99%로 표시되었다. 또한, 이 때가 바로 팀에서 트랜잭션을 수동으로 처리하다가 문제점을 발견했을 때였다. 팀에서는 단지 하나의 애플리케이션과 관련된 시험작동을 수행 중이었다.

그래서 검사를 위한 다음 단계로 애플리케이션을 중지하였으며 다시 topas를 사용하여 컴퓨터에서 사용 중인 메모리의 상태를 확인했다. 이번에는 컴퓨터에서 사용 중인 메모리가 78%였고 기타, 애플리케이션과 관련 없는 알람 기능이 실행 중이었으며 이 때문에 원인을 다시 생각해 보게 되었다.

이러한 검사 과정에서 유용하게 사용할 수 있는 다른 도구로는 svmon과 vmstat, vmo를 들 수 있다.

svmon 명령

svmon 명령은 가상 메모리의 스냅샷을 캡처하여 분석하는 성능 측정 도구이다.

svmon -G 명령을 실행하면 다음과 같은 글로벌 메모리 보고서가 표시된다. 이 보고서에는 시스템에서 사용 중인 실제 메모리와 가상 메모리의 크기와 사용 가능한 크기가 표시된다.

svmon -G


그림 1. svmon 글로벌 메모리 보고서
svmon 글로벌 메모리 보고서

이 메모리 보고서에는 총 메모리 1998848페이지(페이지 크기 = 4K) 중 1996881페이지가 사용 중이고 1967페이지가 사용 가능하다고 표시되어 있다.

그러나 위 보고서에서 사용 가능 페이지의 수가 1967로 표시되었다고 해서 이것이 메모리 관련 제한조건이나 메모리 병목을 의미하지는 않는다. 왜냐하면 애플리케이션이나 커널에서 메모리를 명시적으로 요청하지 않는 한 AIX®에서는 I/O 성능을 개선하기 위해 사용 가능한 메모리를 최대한 사용해서 파일을 캐시하려고 하기 때문이다. 더욱이 이 보고서에는 3145728페이지의 총 페이징 공간 중에서 사용 중인 페이지 공간은 99556페이지라고 표시되어 있다.

svmon -P 명령을 실행하면 모든 프로세스의 메모리 사용량 통계가 표시된다.

svmon -P


그림 2. 프로세스 메모리 사용률 보고서
프로세스 메모리 사용률 보고서

프로세스 메모리 사용률 보고서에는 Java™ 프로세스가 166690페이지의 메모리를 사용하고 있다고 표시되어 있다. 이 보고서를 통해 모든 프로세스에서 사용 중인 메모리를 확인하자, 여러 가지 프로세스에서 사용 중인 메모리의 총 합계가 이 시스템의 총 메모리보다 훨씬 적다는 사실을 알았다. 또한, 이러한 사실로부터 메모리가 제한 요인이 아니라는 점을 알 수 있었다.

vmstat 명령

또 다른 성능 모니터링 도구인 vmstat는 커널 스레드와 가상 메모리, 디스크, CPU 활동에 관한 통계를 보고하는 데 사용된다.

# vmstat 2 10


그림 3. vmstat 보고서
vmstat 보고서

이 vmstat 보고서에는 사용 가능한 메모리가 약 114MB로 표시되어 있다. 또한, 페이지 아웃은 없는 것으로 보고되었다. 그러나 마지막 다섯 개 항목을 통해 하나의 스레드가 블록되었고 시스템에서 일부 I/O가 대기 중이라는 사실을 알 수 있다.

vmo

또한, vmo 명령을 사용하여 성능 매개변수를 확인할 수 있다. vmo 명령을 실행하여 가상 메모리 관리자 매개변수를 표시하고 조정할 수 있다.

vmo –a


그림 4. vmo 명령의 출력
vmo 명령

vmo 명령의 출력을 확인하는 과정에서 lgpg_regionslgpg_size가 각각 256과 16777216(또는 64MB)으로 설정되어 있다는 것을 알았다. AIX는 대용량 페이지를 고정된 메모리로 처리하며 대용량 페이지에 대한 페이징을 지원하지 않는다. 대용량 페이지를 기반으로 하는 애플리케이션의 데이터는 애플리케이션이 완료될 때까지 실제 메모리에서 유지된다. 이 기사에 있는 사례에서는 64MB 크기의 256페이지가 고정되어 예약되어 있다.

다시 그림 1로 돌아가서 svmon -G의 출력을 살펴보면 크기가 16MB인 대용량 페이지의 경우, 풀의 크기는 256이고 대용량 페이지를 사용하는 경우에는 메모리가 고정되어 있기 때문에 16MB의 256페이지를 각각 페이지 아웃할 수가 없다는 점을 확인할 수 있다. 그림 2에서 svmon -P 명령의 출력을 살펴보면 출력의 첫 번째 행에 이름이 16MB인 컬럼이 있으며 그 값이 'N'이라는 것을 알 수 있다. 이는 PID가 266372인 프로세스가 16MB 페이지를 사용하고 있지 않다는 것을 의미한다. 다시 말해서 애플리케이션은 vmo 명령을 통해 예약된 대용량 페이지를 사용하고 있지 않은 것이다. 마찬가지로 실행 중인 다른 프로세스를 같은 보고서에서 확인해 보면 대용량 페이지 지원을 사용하는 애플리케이션이 없다는 사실을 확인할 수 있다. 따라서, 256*16 = 4096MB가 불필요하게 블록되었으며 실행 중인 모든 프로세스에서 이 메모리를 사용할 수 없다.

그림 3에서 실제 메모리가 총 7808MB라는 사실을 확인할 수 있다. 위에 있는 분석 결과에서 명확히 알 수 있는 바와 같이 실제 메모리 중 4096MB는 대용량 페이지를 위해 예약되어 있다. 따라서 실행 중인 모든 애플리케이션은 단지 7808 - 4096 = 3712MB의 메모리만을 사용할 수 있다. 대용량 메모리 청크가 블록되어 사용되지 않는 상태로 남아있었기 때문에 메모리가 완전히 고갈되었던 것이었다.

따라서, 대용량 페이지용 메모리를 블록하지 말거나 애플리케이션에서 이 메모리를 제대로 활용할 수 있도록 해야 한다.


대용량 페이지 구성

애플리케이션이나 시스템을 대용량 페이지를 사용하도록 구성할 수 있다.

대용량 페이지를 사용하도록 애플리케이션 구성하기

ldedit 명령을 blpdata 플래그와 함께 사용하면 실행 파일에서 대용량 페이지를 요청할 수 있다. 이와 관련된 자세한 사항은 참고자료 섹션에서 확인할 수 있다.

대용량 페이지를 사용하도록 시스템 구성하기

기본적으로 시스템은 메모리를 대용량 페이지 실제 메모리에 할당하지 않는다. vmo 명령을 lgpg_regions와 lgpg_size 옵션과 함께 사용하면 대용량 페이지 실제 메모리 풀의 크기를 구성할 수 있다.

LDR_CNTRL 환경 변수를 사용하면 애플리케이션 데이터와 힙 세그먼트에서 대용량 페이지를 사용하게 할 수 있다.

대용량 페이지와 LDR_CONTROL 변수를 구성하기 위한 vmo 명령의 사용법과 관련된 자세한 세부사항은 참고자료 섹션에서 확인할 수 있다.

위에 있는 사례 연구에서 lgpg_regions 값을 명목 값으로 변경하고 애플리케이션에서 대용량 페이지를 사용하도록 하면 메모리 문제를 해결할 수 있으며 전체 시스템 성능도 높일 수 있다.

lgpg_regions 값 결정

lgpg_regions 값이나 성능과 관련된 조정 매개변수 값에는 일반적인 권장사항이 없다. 그러나 명목 값은 시스템에서 워크로드를 확인하여 결정할 수 있다. 위에 있는 사례 연구에서는 LDR_CNTRL 변수를 내보내었을 때 애플리케이션에서 대용량 페이지를 사용하기 시작했다. 이렇게 한 다음, vmstat 명령을 다시 사용했다.

# vmstat –l 10

이 명령을 실행하면 대용량 페이지 섹션과 관련된 통계가 10초 간격으로 표시된다.


그림 5. 대용량 페이지 통계
대용량 페이지 통계

이 보고서에는 대용량 페이지와 관련된 자세한 통계를 제공하는 대용량 페이지 섹션이 있다. alpflp 필드는 각각 활성화된 대용량 페이지와 사용 가능한 대용량 페이지에 해당한다. 이 사례 연구에서는 alp 값이 80을 넘지 않았다. 따라서 메모리를 활용하려면 lgpg_regions 값을 256에서 100 정도로 낮추는 것이 현명하다. 이렇게 하면 상당한 메모리 청크를 4K 메모리의 풀로 돌려보낼 수 있다. 이렇게 함으로써 실행 중인 다른 애플리케이션에서 사용할 수 있는 메모리를 늘릴 수 있으며 따라서 시스템의 전체 성능이 개선된다. 간단히 말해서 시스템의 워크로드를 확인한 다음 매개변수를 조정하는 것이 시스템 자원을 효과적으로 활용하기 위한 핵심이다.


결론

대용량 페이지를 사용하는 기본 목적은 대용량 가상 메모리를 사용하면서 메모리 액세스를 많이 하는 애플리케이션이나 고성능 컴퓨팅 애플리케이션의 시스템 성능을 개선하는 데 있다. 대용량 페이지는 유용하지만 특정 시나리오에서 사용해야 한다. 대용량 페이지는 특정 목적으로 성능을 개선하기 위한 기능이며 일반적인 용도로 사용하기에는 적합하지 않다.


참고자료

교육

토론

필자소개

Saravanan Devendran은 대학을 졸업한 1997년에 IBM에 입사했다. AIX 운영 체제 개발 분야에서 12년 경력을 보유하고 있는 그는 AIX의 다양한 서브시스템에 대한 업무를 맡아 왔으며 성능 도구에 대한 전문성도 갖추고 있다. tprof, mpstat 등과 같은 다양한 AIX용 성능 모니터링 도구를 개발했으며 현재는 AIX 운영 체제에 있는 성능 도구의 아키텍처를 맡고 있다.

Kiran Grover는 IT 업계 경력이 10년이며 현재는 IBM의 AIX Performance Tools Development Team 소속이다. 또한 수학 및 컴퓨터 공학 석사 학위를 보유하고 있다. 그녀는 떠오르는 아이디어를 놓치지 않고 메모하는 습관이 있고 지구 환경을 보호하는 데 관심이 있는 친환경론자이다.

잘못된 도움말 신고

부정사용 신고

감사합니다. 이 항목은 운영자가 관심을 표시했습니다.


잘못된 도움말 신고

부정사용 신고

제출실패 신고. 나중에 다시 실행해주세요.


디벨로퍼웍스 로그인


IBM ID가 필요하세요?
IBM ID를 잊으셨습니까?


비밀번호를 잊으셨습니까?
비밀번호 변경

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

화면상에 보여지는 닉네임을 정하세요.

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

3개의 &이나 대쉬를 포함해주시고 31글자내로 제한해주세요.


developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


아티클 순위

의견

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=20
Zone=AIX와 UNIX
ArticleID=489019
ArticleTitle=AIX의 성능 분석 도구를 사용하여 메모리 관련 문제점 해결하기
publish-date=07282009
author1-email=dsaravan@in.ibm.com
author1-email-cc=mmccrary@us.ibm.com
author2-email=kigrover@in.ibm.com
author2-email-cc=mmccrary@us.ibm.com

태그

Help
검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오.

태그를 더 많이 보거나 적게 보기 위해 슬라이더 막대를 사용하십시오.

인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다.

내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.

검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오. 인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다. 내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.