태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

Oracle에서 CPU High Priority

오라클 2008.03.31 22:19
이번 주에 HP Performance Tuning 교육을 듣고 있다. 교육을 들으면서 오라클 튜닝과 관련된 내용이 나오면 간략하게 정리해보고자 한다.

OS(Unix)에서 특정 프로세스의 Priority를 높여 주는 방법에는 보통 다음 두가지가 있다.
  • NiceRenice 명령을 통해 Nice 정도를 바꾸어 준다. Nice란 말 그대로 프로세스가 다른 프로세스에 대해 얼마나 친절(Nice)한지를 지정하는 것을 의미한다. Nice 값이 낮으면 불친절하므로 그만큼 CPU를 공격적으로 사용하게 된다.
  • 실시간 스케쥴링(Realtime Scheduling, Realtime Priority)을 사용한다. 실시간 스케쥴링을 사용하면 CPU를 거의 독점 모드로 사용하는 효과를 얻는다.(거꾸로 말하면 실시간 스케쥴링을 남용해서는 안된다)
실제로 LGWR나 DBWR와 같이 Oracle에서 핵심적인 기능을 하는 백그라운드 프로세스에 대해 Nice 값을 낮추거나 실시간 스케쥴링을 적용하는 기법을 사용하는 경우도 종종 있었다. 이런 튜닝 기법은 어느 정도 과거 버전의 일로 최근에는 잘 사용되지 않는 것 같다.

하지만 최근에 다시 Oracle Process의 Priority를 높여줘야 할 필요성이 많이 제기되고 있는데 그 이유는 바로 RAC에 있다. RAC에서 가장 중요한 프로세스는 LMS 프로세스이다. RAC의 성능은 인터커넥트를 통한 버퍼 공유를 담당하는 LMS 프로세스에 달려있다고 해도 무방할 정도로 이 프로세스의 성능은 중요하다.

이런 이유로 10gR2부터는 LMS 프로세스에 대해 오라클은 기본적으로 가능한 실시간 스케쥴링 기법을 적용한다. 이것을 결정하는 것이 _os_sched_high_priority 이다. 이 값은 1 이상(기본값은 1)이면 오라클은 LMS 프로세스에 대해 높은 우선 순위, 즉 실시간 스케쥴링을 사용한다.

Oracle 11g에서는 이것은 더욱 확장되어 다음과 같은 두 가지 파라미터를 이용해 특정 프로세스에 대해 높은 우선 순위를 부여할 수 있다.
  • _os_sched_high_priority: 10gR2와 의미는 같다. 단, 11g부터는 높은 우선 순위가 LMS 프로세스에 국한되지 않는다.
  • _high_priority_processes: 높은 우선 순위를 적용할 프로세스 이름의 패턴을 지정한다. 기본값은 "LMS*|VKTM"이다. 즉, LMS 프로세스(LMS0, LMS1, ..., LMSa, LMSb, ...)와 VKTM(Virtual Keeper of Time) 프로세스에 대해 기본적으로 실시간 스케쥴링을 사용한다.
Oracle도 기본적으로는 OS와 하드웨어 자원을 사용하는 프로세스에 불과하다. 물론 아주 복잡한 프로세스이지만...  OS 레벨의 관점에서 Oracle 문제를 해석하고 진단하는 기법과 사례가 많이 공유되었으면 하는 바램이다.



신고
Trackback 0 : Comment 0

Write a comment

티스토리 툴바