본문 바로가기

IT관련

Oracle DB 권고 파라메타 (use_large_pages=only)

** 아래는 제 짧은 경험 및 지식과 Oracle MOS 문서등에서 얻은 지식을 기반으로 작성되었습니다. **

** 저는 Oracle Engineer 를 대표하는 사람이 아니니 참고하시고, 실제 적용하고자 하는 경우에는 좀더 알아보신후 본인 책임하에 확신이 선 경우에 하셔야 합니다. **

 

 

이 파라메타는 리눅스(Linux) 시스템을 사용하는 경우에만 해당합니다. HP-UX, IBM AIX OS 등의 경우에는 다릅니다.

use_large_pages 파라메타는 말 그대로 "큰 램메모리 페이지(hugepages)"를 사용하겠다는 겁니다.

리눅스에서 기본 Memory Page 는 4K 인데, 이걸 2M 단위로 관리하도록 하여 성능을 향상시키려는 목적으로 hugepage 라는 개념이 만들어졌습니다.

 

hugepages 를 사용하게되면, swap 영역을 사용하지 않고, 실제 physical 한 RAM 메모리만 이용하게 됩니다.

따라서, swap page in/out 에 따른 오버헤드가 없어지고, page table 을 관리하는데 따르는 오버헤드가 없어져서 성능상의 이점을 얻을 수 있게 됩니다.

 

오라클 DB의 use_large_pages 파라메타 디폴트값은 "true" 입니다. 

"true" 는 리눅스 시스템에 hugepages 가 설정되어 있으면 이걸 사용하고, 없으면 말겠다는 것입니다.

Oracle DB 인스턴스가 hugepages 에 올라가지 않으면 성능이 많이 저하되는 것으로 알려져 있습니다.

따라서 반드시 충분한 크기의 hugepages 을 리눅스 OS 상에서 먼저 세팅하고, 여기에 Oracle DB 인스턴스가 올라가도록 해야 합니다.

 

반드시 hugepages 를 사용하도록 하려면 use_large_pages 파라메타값을 "only" 로 하면 됩니다.

"only" 로 해놓으면, 리눅스 OS 상에 hugepages 값이 세팅되어 있지 않거나 충분히 크지 않으면 Oracle DB Startup 이 안됩니다.

이렇게하여 Oracle DB가 확실히 hugepages 를 이용하도록 하여 성능저하를 방지할 수 있습니다.

세팅은 아래와 같이 합니다.

 

SQL> alter system set use_large_pages='ONLY' scope=spfile;

 

DB를 기동할때 영향을 미치는 파라메타이기 때문에 scope=spfile 을 넣어줘야 합니다.

파라메타 변경후 DB 재기동이 필요합니다.

이때, Linux OS 상에서 hugepages 값이 설정되어 있지 않으면 DB Startup 이 안됩니다.

반드시 충분한 크기의 hugepages 를 먼저 세팅하여야 합니다.

 

또, hugepage 사용시 AMM 을 지원하지 않아 memory_target 파라메타를 DB에서 사용하면 안됩니다. (MOS문서 1134002.1 참조)

memory_target 대신에 sga_target, pga_aggregate_target 파라메타를 사용합니다.