반응형
이번에는 DB2 9.5 이상에서 각각의 EDU가 사용한 CPU 사용률에 대해서 파악하는 방법을 알아 봅니다.

V9.5 이전까지는 각각의 EDU가 개별 프로세스로 존재를 하여서 O/S 상에서 ps 명령어를 이용하여 각각의 EDU가 사용중인 자원에 대해서 쉽게 파악을 할 수 있었다.

하지만 9.5 이상 부터는 쓰레드 방식으로변경이 되어서 각각의 EDU가 사용되어지는 현황에 대해서 파악이 힘들었다.

DB2 owner로 ps를 해 보아도 db2sysc 프로세스 하나밖에 보이질 않는다.

그래서 내부적으로 db2sysc 라는 프로세스 안에서 돌아가는 각각의 EDU에 대해서 파악하기 위해서는 db2pd -edu 라는 옵션을 이용하면 된다.

다음은 V9.5에서 db2pd -edu 옵션을 이용하여 edu의 정보를 출력한 화면이다.


위에서 보면 O/S상의 프로세스로 존재하는 EDU의 정보 및 Process ID를 파악할 수 있으며 , 각각의 EDU가 사용한 CPU 사용량에 대해서 파악이 가능하다.

V9.1 이하에서는 각각의 db2agent 프로세스 아이디가 CPU를 많이 사용할 경우 해당 프로세스 아이디로 거꾸로 Application을 찾아서 SQL을 추출하고 튜닝하는 과정을 거쳐서 CPU 사용률을 낮출 수 있었다.

하지만 9.5 부터는 내부적으로 EDU ID를 가지고 돌아가기 때문에 외부에서 볼때는 db2sysc만이 CPU를 사용하는 것으로 나타난다.

이럴경우 dbpd -edu를 수행 후 CPU를 많이 사용하는 EDUID 를 파악 후 거꾸로 application ID를 찾아서 SQL을 찾아야 한다.

첨부파일은 다음의 명령어를 수행 한 후에 나온 데이터들 이다.

db2pd -d sample -edu -active -agent -applications -transactions -dynamic >> edu.out     
db2pd -d sample -edu 한 결과를 보면 User CPU를 많이 사용하는 EDU는 8176 이다.

8176이 수행중인 SQL을 다음의 순서로 찾을 수 있다.


위의 내용은 모두 하나의 파일 edu.out에 포함되어 있으니 참고 하실분은 참고 하시면 됩니다.

반응형

+ Recent posts