소개

메모리 튜너는 활성화되면 정렬 힙(sort heap), 패키지 캐시, 잠금 목록, 버퍼 풀 등을 포함하여 사용 가능한 메모리 자원을 여러 메모리 소비자에 동적으로 배포한다. 이 기능은 전체 시스템 성능을 높이려고 조금씩 반복하여 메모리 구성을 수정하는 식으로 작동한다.

STMM에서 변경한 모든 내용은 db2diag.log와 STMM 로그 파일 두 곳에 기록된다. 다음에서 두 로그 파일의 내용과 db2diag 도구, parseStmmLogFile.pl 도구를 사용하여 STMM이 변경한 내용을 모니터링하는 방법을 설명한다.


STMM이 작동하는 방법

STMM은 추가 메모리가 힙에 미치는 영향을 예측하는 새로운 내부 메트릭스(metrics)를 사용하여 결정을 수행한다. 이 메트릭스는 STMM의 고급 튜닝 알고리즘과 결합하여 대부분의 경우 최초 구성부터 거의 최적의 메모리 사용에 이르기까지 한 시간 이내에 시스템을 튜닝할 수 있다. 하지만 시스템을 튜닝할 때 STMM은 수백 가지 튜닝을 결정할 수 있으며 각 결정 때문에 구성 매개변수나 버퍼 풀 크기가 변경된다. 이러한 변경 사항 중 가장 최신의 변경만 구성 파일에 반영되므로 구성 매개변수나 버퍼 풀에 대한 내역 값(historic values)을 확인하려면 db2diag.log와 STMM 로그 파일을 검사해야 한다.


db2diag.log 파일의 변경사항 모니터링

db2diag.log 파일은 메모리 매니저가 변경한 각 구성 변경사항의 간단한 정보를 저장하기 위한 저장소다. 이 파일에서 다음 Listing 1에 표시된 것과 같은 구성 변경사항을 나타내는 레코드를 볼 수 있다.


Listing 1. 구성 변경사항을 나타내는 레코드

                
2006-10-17-19.10.00.912218-240 I408210A457        LEVEL: Event
PID     : 946302               TID  : 1           PROC : db2stmm (MYDB1) 1
INSTANCE: ewhhr                NODE : 001         DB   : MYDB1
APPHDL  : 1-52                 APPID: *N1.cgarciaa.060809150048
AUTHID  : CGARCIAA
FUNCTION: DB2 UDB, config/install, sqlfLogUpdateCfgParam, probe:20
CHANGE  : STMM CFG DB DEWHR000: "Sheapthres_shr" From: "109306" <automatic>
                                                 To: "105115" <automatic>

위에서 "STMM CFG"가 있는 구성 변경사항으로 시작하는 레코드는 이 변경이 사용자가 시작한 구성 업데이트가 아니라 STMM에서 시작된 변경임을 나타낸다. Listing 2와 같이 버퍼 풀 변경사항을 나타내는 레코드도 표시된다.


Listing 2. 버퍼 풀 변경사항을 나타내는 레코드

                
2006-10-17-19.03.58.672185-240 I395047A488        LEVEL: Event
PID     : 946302               TID  : 1           PROC : db2stmm (MYDB1) 1
INSTANCE: ewhhr                NODE : 001
APPHDL  : 1-52                 APPID: *N1.cgarciaa.060809150048
AUTHID  : CGARCIAA
FUNCTION: DB2 UDB, buffer pool services, sqlbAlterBufferPoolAct, probe:90
MESSAGE : Altering bufferpool ?쏝UFFERPOOL_16K" From: ??17268" <automatic>
                                               To: ??09666" <automatic> 

이 레코드는 db2diag 도구를 사용하여 db2diag.log로부터 쉽게 필터링할 수 있다. 예를 들어 다음 명령을 사용하면 버퍼 풀 크기에 대한 모든 변경사항을 찾을 수 있다.


Listing 3. 버퍼 풀 변경사항을 찾기 위한 db2diag 명령

                
db2diag -g "message:=Altering bufferpool" db2diag.log

데이터베이스에 여러 파티션이 있으며 DB2의 데이터 파티션 기능을 사용하는 경우 각 파티션에 대한 변경사항은 -node 옵션으로 필터링할 수 있다. 예를 들어 다음 명령은 파티션 1의 모든 데이터베이스 구성 업데이트를 필터링한다.


Listing 4. 구성 변경사항을 찾기 위한 db2diag 명령

                
db2diag -node 1 -g "changeevent:=CFG DB" db2diag.log


STMM 로그

변경사항은 db2diag.log 파일의 로그 항목 외에도 STMM 로그에 더 자세하게 기록된다. 이 경우 변경사항은 db2diag.log 파일과 동일한 디렉터리인 stmmlog라는 디렉터리에 저장된다. STMM 로그는 대개 DB2 지원에서 문제를 검사하는 데 사용한다. 하지만 STMM 로그에 있는 일부 튜닝 정보는 DBA가 STMM에 의한 튜닝 결정을 이해할 수 있도록 도움을 준다. STMM 로그의 각 항목은 튜닝 결정을 하기 전에 수집된 통계와 해당 통계를 기반으로 수행된 조치를 기록한다. STMM 로그는 최대 다섯 개의 파일로 분리되며 각 파일의 최대 크기는 10MB다. 이러한 로그 파일은 순환 방식으로 유지되어 새 파일을 만들기 전에 항상 가장 오래된 파일을 삭제한다.

STMM 로그 파일 파서의 목적은 중요한 튜닝 정보를 필터링하고 포맷하여 메모리 구성의 변화를 쉽게 식별할 수 있도록 하는 것이다.


STMM 로그 파일의 구문 분석

여기에 제시된 구문 분석 도구인 parseStmmLogFile.pl의 구문은 다음과 같다.


Listing 5. parseStmmLogFile.pl 구문

                
parseStmmLogFile.pl <log file> <database name> <options>

이 도구를 실행하면 결과가 테이블 형태로 생성된다. 이 테이블의 처음 네 열은 사용자가 선택한 옵션과 관계없이 동일하다. 처음 네 열은 다음과 같다.

  • 튜닝 간격 번호
  • 튜닝 간격이 발생한 시간
  • 로그 파일에서 첫 번째 튜닝 간격 이후 총 시간(초)
  • 이전 튜닝 간격이 시작된 이래 경과한 시간(초): 이 값에는 메모리 힙의 크기를 조정하는 데 걸린 시간과 튜닝을 결정하기 위해 통계를 수집하는 데 걸린 시간이 포함된다.

Listing 6에서는 두 튜닝 간격에 대한 처음 네 열의 예를 보여 준다.


Listing 6. parseStmmLogFile.pl 샘플 결과

                
[ MEMORY TUNER - LOG ENTRIES ]
[ Interv ] [        Date         ] [ totSec ] [ secDif ]
[        ] [                     ] [        ] [        ]
[      1 ] [ 02/01/2006 09:45:02 ] [     76 ] [     76 ]
[      2 ] [ 02/01/2006 09:46:03 ] [    137 ] [     61 ]

이 도구는 선택한 옵션을 기반으로 STMM 로그 파일 전체를 구문 분석하며 지정한 옵션에 대한 특정 상세를 수집한다. 선택할 수 있는 옵션에는 다음과 같이 총 네 개가 있다.

  • (s) — 각 소비자의 새 크기를 표시한다(기본 옵션).
  • (m) — 각 소비자의 최소 크기를 표시한다.
  • (b) — 각 소비자의 이점(benefit) 데이터를 표시한다. 이점 데이터는 각 소비자가 추가 메모리에서 얻을 수 있는 이점의 양을 나타낸다.
  • (o) — DATABASE_MEMORY 튜닝 정보를 표시한다.

이외에 다음 두 가지 선택적 플래그를 사용하여 실행 결과를 수정할 수 있다. 이 플래그를 지정하는 경우 반드시 위 플래그 중 하나를 지정해야 한다.

  • (4) — 모든 메모리 소비자의 페이지 크기를 4KB로 변환한다.
  • (d) — 실행 결과를 세미콜론으로 분리한다. 이 옵션은 파서의 출력 내용을 스프레드시트로 입력하려는 경우 유용하다.

예 1. 힙 크기 조정 내역

이 옵션은 STMM에서 수행한 구성 매개변수와 버퍼 풀 변경사항을 표시하는 데 사용된다.

Listing 7에서는 두 튜닝 간격으로부터의 정보를 표시하는 데 parseStmmLogfile.pl 명령을 사용한다. 첫 번째 튜닝 간격은 STMM 로그 파일이 만들어지고 76초 후에 시작되었다. 또한 튜닝되고 있는 두 매개변수는 SHEAPTHRES_SHR과 PCKCACHESZ다. 두 번째 행은 61초 후에 시작된 두 번째 튜닝 간격을 표시하며 이에 따라 PCKCACHESZ에서 SHEAPTHRES_SHR로 1000페이지가 전송되었다.


Listing 7. 튜닝 간격에 대한 샘플 결과

                
$ parseStmmLogFile.pl stmm.0.log mydbname s
                      
  [ MEMORY TUNER - LOG ENTRIES ] 
  [ Interv ] [        Date         ] [ totSec ] [ secDif ] [ newSz ]
  [        ] [                     ] [        ] [        ] [ SHEAPTHRES_SHR  PCKCACHESZ ] 
  [      1 ] [ 02/01/2006 09:45:02 ] [     76 ] [     76 ] [ 31482 19438 ]       
  [      2 ] [ 02/01/2006 09:46:03 ] [    137 ] [     61 ] [ 32482 18438 ]

예 2. 데이터베이스 메모리 크기 조정 내역

다음 명령은 데이터베이스 메모리 튜닝 결정에 대한 기본 정보를 출력하는 데 사용된다. 여기에는 메모리 튜너가 확인한 시스템의 총 메모리 양(configMem), DB2가 사용할 수 있는 실제 메모리 양(memAvail), DATABASE_MEMORY 구성 매개변수를 사용하여 크기가 지정되는 데이터베이스 공유 메모리 세트의 현재 크기(setConfSz)를 나타내는 열이 포함된다.


Listing 8. database_memory 튜닝에 대한 샘플 결과

                
$ parseStmmLogFile.pl stmm.0.log mydbname o

[ MEMORY TUNER - DATABASE MEMORY AND OVERFLOW BUFFER TUNING - OG ENTRIES ]
[ Interv ][ Date                ][ totSec ][ secDif ][ configMem ][ memAvail ][ setCfgSz ]
[      1 ][ 02/01/2006 09:45:02 ][     76 ][     76 ][       N/A ][      N/A ][      N/A ]
[      2 ][ 02/01/2006 09:46:03 ][    137 ][     61 ][   4194304 ][  1559966 ][    62224 ]

예 3. SORTHEAP 크기 조정의 내역

이 명령은 SORTHEAP 구성 매개변수의 값을 튜닝하는 데 사용되는 정보의 요약을 출력하는 데 사용된다. 각 행은 SORTHEAP 값에 대한 성공적인 자동 업데이트를 나타낸다. 열에는 SORTHEAP 구성 매개변수(OLD), 현재 값(NEW), 메모리 튜너가 계산한 최소 및 최대 값(min/max)이 포함된다.


Listing 9. SORTHEAP 튜닝에 대한 샘플 결과

                
$ parseStmmLogFile.pl stmm.0.log mydbname v

[ SORTHEAP TUNING - SORTHEAP CHANGE VALIDATION RECORDS ]
[ Date                ][ totSec ][ secDif ][ SHEAPTHRES_SHR ][ OLD ][ NEW ][ min ][  max ]
[ 02/01/2006 14:51:01 ][    184 ][    184 ][          11212 ][ 373 ][ 560 ][ 224 ][ 2243 ]


힌트와 팁

  • 도구를 실행할 때 지정한 데이터베이스 이름이 STMM 로그 파일에 있는지 확인한다.
  • 최적의 결과를 얻으려면 결과를 쉽게 읽을 수 있도록 도구를 실행할 때 옵션을 각각 한 개(m, so)만 지정한다.
  • 실행할 때 옵션을 지정하지 않으면 기본적으로 새 크기나 s 옵션이 표시된다.
  • 자세한 옵션 목록은 위에 표시된 것과 같은 예를 포함하여 스크립트 자체 내에 제공된다.
  • 도구를 실행하려면 실행되는 시스템에 펄(Perl) 인터프리터가 설치되어 있어야 한다. 시스템에 펄 인터프리터가 없는 경우 http://www.perl.org에서 다운로드할 수 있다. 이 소프트웨어를 다운로드하여 설치하기 전에 타사 소프트웨어 사용에 대한 회사 정책을 확인해야 한다.
  • 이 도구는 DBA가 자신의 특정 요구사항에 맞춰 수정할 수 있도록 펄 스크립트 언어로 개발했다. 예를 들어 내역 데이터를 구성하기 위해 기타 도구로 가져올 수 있는 다른 포맷을 사용하도록 수정할 수 있다.

법적 고지 사항

IBM은 IBM 사이트에서 참조되거나, 액세스할 수 있거나, 링크되어 있는 비IBM 웹 사이트 또는 제3자 소스에 대하여 어떠한 진술, 보증 또는 기타 확약도 제공하지 않습니다. 비IBM 웹 사이트에 대한 링크가 존재하더라도, IBM이 해당 웹 사이트의 내용을 보증하거나 해당 사이트의 사용에 대해, 또는 해당 사이트 소유주에 대한 책임이 있다는 것을 의미하지 않습니다. 또한, IBM은 귀하가 제3자와 체결할 수 있는 거래의 당사자가 아니며 해당 거래에 대한 책임이 없습니다. 귀하가 IBM 사이트로부터(또는 해당 당사자로의 링크를 통하여) 해당 당사자와 연결된 경우에도 책임이 없습니다. 또한, 귀하는 IBM이 외부 사이트 또는 소스의 이용 가능성에 대해 책임이 없고, 해당 사이트 또는 소스에서 이용할 수 있는 컨텐트, 서비스, 제품 또는 기타 자료에 대하여 책임이 없다는 점을 인정하고 동의합니다. 제3자가 제공한 소프트웨어는 해당 소프트웨어에 수반하는 제3자의 라이센스 조건에 따릅니다.



다운로드 하십시오

설명 이름 크기 다운로드 방식
STMM 로그 파일을 분석하는 도구 parseStmmLogFile.pl 44KB HTTP

다운로드 방식에 대한 정보


 

참고자료

교육

제품 및 기술 얻기

토론

 

parseStmmLogFile.pl

+ Recent posts