[재 인쇄] [클라우드]와 전 잉크 성능 최적화 : Linux 환경, 대용량 메모리 페이지의 합리적인 배분 (HugePage)

[클라우드]와 전 잉크 성능 최적화 : Linux 환경, 대용량 메모리 페이지의 합리적인 배분 (HugePage)

HTTPS : // www.cnblogs.com/lhrbest/p/5866284.html

 

 

[클라우드]와 전 잉크 성능 최적화 : Linux 환경, 대용량 메모리 페이지의 합리적인 배분 (HugePage)
 

시옹 6월 (숙박)

음, 제너럴 매니저 구름과 메시나 지역의

오라클 했었죠, ACOUG 핵심 멤버

 

 

개발 오늘날 PC 서버는 성능면에서 큰 진전을 이루었습니다. 몇 년 전에서 64 비트 CPU는, 특이한 집에있는 PC에 입력 한 하이 엔드 형 PC 서버를하자, 두 개의 프로세서 거인 인텔과 AMD, 86 CPU의 처리 능력의 노력에 증가하고있다 하며 제조 공정의 개발과 더불어, PC 서버 메모리 용량에 설치할 수는 증가하고, 지금 당신은 G 메모리 PC 서버의 수십 볼 수 있습니다. 그것은 PC 서버의 처리 용량보다 더 강력하고 더 높은 성능입니다 그래서, 하드웨어 개발이다. 안정성의 측면에서, PC 서버 및 리눅스 운영 체제, 그것은 또한 전체 안정성과 중요한 비즈니스 시스템에 필요한 신뢰성을 할 수 있습니다. 물론, 비용의 측면에서, 우리는 업계의 소프트웨어 공급 업체의 말에 네티즌의 인용 "당신이 PC 서버 미니 컴퓨터를 사용하지 않을 경우, 우리는 돈을을?" 에 관계없이 동일한 처리 능력 이상의 동작, 미니 컴퓨터 PC 서버의 초기 구매, 소비 및 유지 보수 비용이 훨씬 저렴의. 그것은 점점 더 PC 서버의 성능이 두 가지 중요한 요소, 데이터베이스 실행 비용의 영향이었다. 내가 역할을 일부 클라이언트, 심지어 하이 엔드 PCServer 이러한 데이터베이스는 더 부족이 중요한 생산 시스템을 가지고하지 않습니다, 각 가상 머신에 Oracle 데이터베이스를 실행하는 여러 시스템에 가상화.

 

의심의 여지가 없다, PC를 서버에서 Oracle 데이터베이스를 실행, 의심 할 여지없이 가장 적합한 Caozuojitong 리눅스입니다. 매우 유사한 Caozuoxitong UNIX 같이, UNIX 동일한 우수한 성능 및 안정성, 신뢰성 및 성능을 갖는다. 그러나 리눅스 AIX, HP-UX 및 기타 Caozuojitong 명백한 결함이 결함에 비해 처리 메커니즘을 페이징에 데이터베이스의 상당한 부정적인 성능을 가질 때 심각하게 큰 SGA를 사용하여 Oracle 데이터베이스에서 특히 분명하게 반영 효과도 정지 데이터베이스가 완전히 응답 원인. 이 논문은 경우 이러한 결함에 상세하게 설명하고, 리눅스에서 큰 메모리 페이지는이 문제를 해결하기 위해.

 

케이스의 도입

 

고객의 시스템에 심각한 성능 문제. 문제가 완전히 응답하지 않는 모든 비즈니스 운영의 응용 프로그램의 시스템 기본적으로 사용할 수 없게 발생합니다. RHEL 5.2에서 오라클 10.2.0.4 오라클 데이터베이스를 실행하는 데이터베이스 시스템 (레드햇 엔터프라이즈 리눅스 서버 릴리스 5 (Tikanga가))이며, 네 개의 4 코어 제온 프로세서를위한 CPU (인텔 (R) 제온 (R) CPU E7430 32GB의 16 논리 CPU, 메모리이다 @ 2.13GHz). 실패하는 동안, 데이터베이스 서버의 CPU가 100 %로 유지했다. 모든 심지어 웹 로직 서버 응용 프로그램이 종료 된 후, 몇 분 안에 CPU 사용률 데이터베이스 서버는 100 %되었으며, 점차 정상 유휴 상태로 가을 20 분 정도, 감소 모든 시간 때문에 응용 프로그램이 종료되었습니다 만 매우 낮은 CPU 사용률이 정상 상태입니다. 이것은 이미도 데이터베이스가 아닌 하루 이틀을 다시 시작한 후, 이러한 실패는 또한 나타납니다 여러 번 일어난 것을 반영하기 위해 시스템 유지 보수 직원의 데이터베이스에 따르면. 동시에 시스템은 최근 큰 변화를 수행하지 않았습니다.

 

당신은 SSH를 통해 연결할 수 있습니다 전에 보고서를받은 후 실패를 받아 데이터베이스에 대한 데이터베이스 연결이 매우 느립니다, 거의 1 분했다. 서버의 성능 상태에서 짧게 보면, IO 개발은 적어도 1GB 이상 더, 인 / 아웃 페이지에는 페이지가 없습니다, 여전히 더 많은 메모리가 남아있는, 매우 낮다. 가장 눈에 띄는 현상은 매우 높은 CPU 사용률, 100 % 동안 SYS CPU 사용률의 일부, 95 % 이상을 유지하고있다한다. Caozuojitong의 실행 큐는 200 위였다. 서버 메모리 사용량은 다음과 같습니다 :

 

 

 

높은 SYS CPU의 얼굴은 문제를 분석하는데 중요한 단서이다.

후 운영 체제 수준이 즉시 SQLPLUS, 데이터베이스 :( 주 내보기의 성능 정보를 통해 데이터베이스에 연결할 때 가장 빠른 어떤 성능을 이해 : 다음과 같은 데이터 SQL, 서버 이름, 데이터베이스 이름 및 기타 관련 정보가 처리에 관한. )

 

...이 부분을 생략, 공간을 절약하려면 ...

 

 

 

통화는 waitEvent, 이벤트를보기 위해 기다리고

 

 

활성 데이터베이스 및 이벤트를 볼 수 있도록 대기하고 예외 많이하지에서. 그것은 주목할 만하다 100 % 장기 데이터베이스 서버 CPU 사용률, 또는 스왑 메모리와 함께 실제 메모리 고갈, 당신은 더 특정 유형으로 교환, 많은 수의 신중 진단 데이터베이스 성능 현상에 필요 이벤트를 기다리는 CPU 나 메모리가 부족의 결과 또는 이러한 데이터베이스는 과도한 CPU 또는 메모리 고갈로 인한 특정 활동 근본 원인이 때문이다.

 

상기 데이터로부터, 50 미만의 활성 세션의 특히 다수 아니다 플러스없이 작은 차이에 비해 운영 시스템 (200)을 실행하는 백그라운드 프로세스의 수. 비 유휴 대기 이벤트의 세 가지 주요 데이터베이스, 관련 읽기 등의 DB 파일 순차적으로 DBLINK 및 래치 대기 관련 이벤트에서 SQL * 순 더 많은 데이터, 데이터베이스 링크에 대한 IO 관련 대기가 있습니다. 이 세 종으로, 보통 래치 대기 이벤트는 CPU 사용률이 이러한 증가의 원인이됩니다.

 

분석 및 비교를 통해, 일반 장애시 데이터베이스에서 이벤트 기간 동안 AWR 보고서에는 특히 유의 한 차이가 없다. 그러나 통계 시스템에서 매우 다른 :

 

 

일시간 (1) 정상 시간주기 1시간 (2)로부터 상기 데이터가 비교 데이터 AWR 장애 구간을 포함한다. 고장 분석의 경우, 실패가 특정 시간에서이다는 상대적으로 짧은 한 시간은 정확하게 고장시 상황의 성능을 반영 충분한 AWR 보고서가 아닙니다. 그러나 때 문제 슈팅, 다양한 데이터에서 맨 먼저 필요가 방향을 결정합니다. 앞서 언급 한 바와 같이, CPU 사용률이 매우 중요한 단서가 너무 높은 SYS 부분, 데이터베이스 적은 케이스 내부 다른 성능 데이터가 먼저 CPU를 시작할 수 있습니다.

 

운영 체제 CPU 사용량 분석

 

그런 다음 운영 체제에서, SYS 및 USER 두 개의 서로 다른 활용은 무엇을 나타냅니다? 또는 둘의 차이점은 무엇입니까?

 

간략하게, CPU 사용률의 SYS 부는, CPU를 사용하는 운영 체제 커널 (커널)의 부분을 의미한다, 즉, 커널 코드가 실행중인 상태를 소비하는 CPU는 가장 일반적인 시스템 호출 (SYS CALL)입니다 CPU의 소비. USER 부 응용 소프트웨어는 CPU의 코드 부분을 사용하는 동안, 즉 사용자의 코드 실행 상태는 CPU를 소모. SQL을 실행할 때 오라클과 같은 캐시 버퍼 DB 디스크 데이터로부터 판독의 CPU를 오퍼레이팅 시스템 커널을 SYS 부분을 계산하는 단계를 포함하여 소비되고, 판독 호, 판독 호출 동작 장치 드라이버 주로 코드를 개시해야하고, 오라클 데이터가 디스크에서 읽을 구문 분석 할 때, 유일한 따라서 CPU가 사용자 섹션을 계산 소모, 오라클의 자신의 코드를 실행합니다.

 

그래서 SYS의 메인 CPU의 일부 또는 운영 시스템은 무엇이라고 생성합니다 :

이러한 판독 및 기록 파일, 주변 장치에 대한 액세스 네트워크를 통해 전송 된 데이터로서 1 I / O 연산. 작업의이 부분은 없습니다 주로 때문에 IO 작업에서 장치에 소요되는 시간에, 너무 많은 CPU를 소비 일반적이다. 이러한 파일이 디스크로부터 판독 될 때, 디스크의 내부 시간의 기본 동작은 CPU 시간은 시간의 일부에 응답하여 단지 I / O 동작을 소모. 때만 과도한 동시 I / O가 SYS의 CPU의 증가를 초래한다.

이러한 메모리에 대한 응용 프로그램 프로세스 운영 체제, 운영 시스템 유지 보수 시스템에 사용 가능한 메모리, 스왑 공간, 사료 등으로 2. 메모리 관리. 오라클과 비슷한 사실에서, 메모리가 클수록 더 높은, 더 자주 메모리 관리 운영, CPU 소비.

3. 프로세스 스케줄링. 이 섹션은 CPU, 더 진행 요구가 높은 부담의 커널을 예약 할 것을 나타내는, 큐의 길이, 더 이상 실행 큐를 실행하는 운영 시스템을 사용합니다.

프로세스 간 통신은 디바이스 드라이버 내의 신호 처리 활동의 양 등을 포함하는 다른 4.

 

시스템 장애, 메모리 관리, 프로세스 스케줄링의 관점에서 성능 데이터는 2 개 SYS 높은 CPU의 원인이 될 수있다. 그러나 최대 200 이상 실행 큐는,의보다는 인해 높은 CPU 사용률의 결과로 실행 큐 높은 결과로 높은 CPU 사용률로 이어질 가능성이있다. 데이터베이스 내부의 관점에서 활성 세션의 특히 높은 번호가 아닙니다. 그런 다음, 그것으로 인해 높은 CPU 사용률을 주도 시스템 메모리 관리의 문제에 초점을 맞출 필요에인지?

이 문서의 시작 부분에 수집 메모리 / proc 디렉토리 / meminfo 파일 시스템 데이터의 조건을 불러 오기, 당신은 중요한 데이터를 찾을 수 있습니다 :

페이지 테이블 : 4749076 kB의

 

당신은 데이터에서 볼 수, 페이지 테이블 메모리 4,637메가바이트는 도달한다. 문자 그대로의 페이지 테이블은 "페이지 테이블"을 의미합니다. 간단하게 말해서, 그것은 운영 체제 커널 가상 주소는 선형 과정과 실제 물리적 메모리 주소 대응표 관계를 유지하는 데 사용된다.

 

일반적으로 페이지입니다 물리적 메모리 현대 컴퓨터는 x86 프로세서 아키텍처 (페이지 프레임) 관리 및 할당 단위, 페이지 크기가 4K이다. 운영 체제에서 실행되는 프로세스는 접근 할 수없는 주소 공간은 관련 프로세서의 자리, 가상 주소 공간이라고합니다. 32 비트 x86 프로세서의 경우, 프로세스는 4기가바이트의 주소 공간에 액세스 할 수 있습니다. 운영 체제에서 실행중인 각 프로세스는 자신의 독립적 인 가상 주소 공간 또는 선형 주소 공간을 가지고 있으며, 이것은 또한 페이지의 주소 공간입니다 (페이지) 관리, 리눅스, 페이지 크기는 일반적으로 4킬로바이트입니다. 가상 어드레스를 물리 어드레스되는 과정을 번역 할 책임 운영 체제 및 하드웨어로 메모리를 액세스하는 과정에서. 두 개의 다른 방법, 물리적 메모리는 동일한 가상 주소 선형 가리키고, 이러한 공유 메모리로서, 동일 할 수도 전용 메모리 처리와 다른 그러한 수있다.

 

도면은 가상 어드레스와의 대응 관계에 대한 물리 메모리의 개략도이다 :

 

 

이러한 포크 또는 복제 다른 공정 과정으로 두 프로세스 A는, B는, 각각, 메모리 포인터 어드레스 0x12345은 (0X는 16 진수를 나타냄)가있다 가정하고이 두 공정은 동일한 메모리의 존재를 가리 경우 포인터 주소. 상기 메모리 어드레스에 액세스 할 때 0x12345 프로세스는 운영 시스템은 처리 A를 0x23456으로 물리적 주소로이 주소를 변환하여, 프로세스 B는 모두 서로 독립적 0x34567이다. 그런 다음 실제 주소 무엇 때가? 프로세스 개인 메모리 (이것은 대부분의 경우 사실이다)의 경우, 올 메모리를 할당하기 위해 운영 체제를 요청하는 중입니다. 프로세스 요청이 운영 체제에 메모리를 할당 할 때 운영 체제가이 가상 주소로, 같은 시간에 가상 주소와 물리 메모리 주소 간의 매핑을, 스레드 프로세스에 가상 주소를 생성 수립되는 페이지 단위로 프로세스에 할당 된 실제 메모리 무료입니다 결과는 프로세스에 반환됩니다.

 

페이지 테이블 (페이지 테이블) 운영체제 데이터 구조를 유지하고, 위치 관계에 대응하는 가상 메모리 주소를 처리하기 위해 사용된다. 도면의 간단한 페이지 테이블 경우의 모식도이다 :

 

 

 

32 비트 시스템에서 간단히 설명 다음은, 페이지 크기는 운영 시스템은 가상 어드레스와 실제 프로세스의 물리적 어드레스 사이를 변환하는 방법이며, 4K이다.

표 1. 콘텐츠 데이터 구조 (32)를 나타내는 각 디렉토리 엔트리, 즉, 4 바이트의 위치는, 페이지 테이블이 저장되며, 인덱스 페이지 테이블에 사용된다. 목차 그냥 4킬로바이트있는 메모리를 차지 페이지 테이블의 위치 1024 저장할 수있다, 즉, 1024 개 디렉토리 항목을 저장할 수 있습니다.

(2) 페이지 테이블 엔트리 4 바이트 (페이지 테이블 항목), 물리적 메모리 페이지를 메모리 시작 주소. 각 페이지 테이블은 물리적 메모리 페이지의 시작 주소를 저장할 수 같은 4K 메모리 1,024 차지합니다. 정렬 4킬로바이트 단위의 물리적 메모리 페이지의 시작 어드레스 이후의 32 비트는, 단지 어드레스 (20)와 같은 메모리 페이지를 읽기 전용으로되어 있는지 또는 쓰기 등을 나타내는 것과 같은 다른 목적을 위해 사용 된 다른 12 비트를 나타 내기 위해 필요하다.

3.1024 페이지 테이블의 물리적 메모리의 각 페이지 테이블 1024 페이지의 선두 어드레스가, 합 1M 주소 인 물리적 메모리 페이지 크기를 각 어드레스 점 4킬로바이트 4GB의 전체이다.

4. 하드웨어 및 운영 체제 10월 31일부터 22일까지 페이지 테이블에 가상 주소 1024에서 디렉토리 엔트리에 인덱스에 사용되는 물리적 주소를 가상 주소를 매핑하고, 가상 주소 (10)의 12-21 그 페이지 테이블 1024 페이지 테이블 엔트리 인덱스로 사용되는 비트. 오프셋 12 4킬로바이트 메모리 페이지와이 물리적 메모리 페이지의 시작 주소를 획득하는 페이지 테이블 엔트리 인덱스로하고, 가상 주소에서 0-11. 그런 다음 실제 메모리의 물리적 메모리 페이지 주소를 시작 플러스 오프셋 프로세스가 액세스 주소를 필요합니다.

 

이 두 공간의 내용과 페이지 테이블 데이터 구조의 테이블에서 봐 얼마나에 의해 점령. 고정 만 4킬로바이트 표. 페이지 테이블이? 1024 개 페이지 테이블에 거기 때문에, 각 페이지 테이블은 4킬로바이트를 차지, 따라서 메모리 페이지 테이블 4MB의를 차지한다. 사실, 32 비트 리눅스는 일반적으로 적은 프로세스 페이지 테이블입니다. 이 과정은도 커널에 주어진 가상 주소 공간의 1GB의 4GB의 주소 공간의 모든 크기까지 할 수 없습니다. 리눅스는 할당 및 액세스 메모리에 한 번 프로세스 페이지 테이블 만 프로세스를 확립하기 위해 너무 많은 아니지만, 운영 체제는 해당 주소 매핑 프로세스 설정됩니다.

 

여기, 가장 간단한 경우에만 페이지 매핑. 총 4과 함께 실제로 페이지 테이블 페이지 테이블 디렉토리. PAE 시스템 이상의 상기도보다 복잡 64 비트 32 비트 페이지 테이블 구조를 사용하도록되어있다. 그러나 상관없이 마지막 레벨 페이지 테이블 구조는 그 방법, 동일하지 않습니다. 64 비트 시스템에서, 페이지 테이블의 페이지 테이블 엔트리 (페이지 테이블)로서 64 비트 변경된 32 비트, 32 비트의 크기를 비교 하였다. 그렇다면이 많은 영향을 미칠 것인가? 처리하면 실제 메모리 액세스는, 32 비트 시스템은 페이지 테이블은 262,144 * 4/1024/1024 = 1메가바이트 및 64 비트 시스템에서, 페이지 테이블 공간이 증가 점유 한 필요 1GB의 메모리, 즉 262,144 페이지입니다 시간, 그 2메가바이트이다. 오라클 데이터베이스에 대한 리눅스의 표정은 시스템에서 실행하지만, 방법도 몇 가지 시나리오에 대해. 12기가바이트의이 문서 데이터베이스 SGA 크기의 스토리, 모든 SGA 메모리에 OracleProcess 액세스, 다음 페이지 테이블의 크기가 엄청난 인물이다 24메가바이트이 ​​될 것입니다 경우. 때문에 평균적으로 각 프로세스의 PGA, PGA을 무시하는 것은 더 이상 2M 이상은 SGA에 비해 너무 작 없습니다. 관점에서 AWR 보고서, 300 개 다음 세션, 7,200메가바이트에 도달이 300 페이지에 연결된 테이블에 대해이 있습니다,하지만 모든 프로세스는 SGA 메모리 모두에 액세스 할 수 있습니다. 페이지 테이블에서보기는 SGA의 크기는 결과의 12기가바이트에 도달, 너무 많은 페이지 테이블 공간이 300 개 세션입니다 4,637메가바이트의 크기에 도달 할 meminfo 파일.

 

분명히 시스템뿐만 아니라 페이지 테이블이 고유 한 메모리 관리 데이터 구조, 메모리를 관리하는 데 사용되는 다른 데이터 구조가있다 할 것이다. 이 대형 메모리 관리 구조, 그것은 의심 할 여지없이 크게 운영 체제 커널에 대한 부담과 CPU의 소비를 증가시킬 것이다. 이러한 다중 처리와 메모리 요구에 큰 변화가, 동시에 많은 양의 메모리를 신청 부하 변화 또는 다른 원인으로, CPU 피크는 문제를 일으키는 짧은 시간에 발생할 수있다.

 

대형 페이지는 문제를 해결하기 위해

충분한 시간이 너무 큰 페이지 테이블 문제를 일으키는 및 시스템 요구 사항이 몇 번 더 절반 시간 이상 사용할 수없는 실패에 직면 할 수 있음을 증명하기에 충분한 증거를 수집하기가 결정적인 증거가 없다,도 있지만. 하지만 지금이 가장 큰 의심스러운 점이다. 따라서, 결정은 조정 메모리 사용을 최적화 시스템에 대용량 메모리 페이지를 사용합니다.

 

대형 메모리 페이지는 대형 페이지에 대한 리눅스의 낮은 버전의 일반적인 용어, 그리고 거대한 페이지에 대한 현재 주류 리눅스 버전입니다. 거대한 페이지 거대한 페이지 장점을 설명하기 위해 예를 어떻게 사용하는 다음.

이점은 무엇 대형 페이지 :

페이지 테이블 (페이지 테이블) 크기를 줄이십시오. 각 페이지 거, 물리 메모리의 대응 연속 2메가바이트 및 12기가바이트 물리적 메모리에만 24메가바이트 원래 많이 비해 감소 48킬로바이트 페이지 테이블을 필요로한다.

2. 거 메모리 페이지 만 물리 메모리에 잠글 수 있고, 교환을 전환 할 수 없다. 이 피합니다 성능에 미치는 영향은 교환에 의해 발생.

3 때문에 그렇게합니다 (CPU 페이지 테이블 CACHE 것으로 이해)는 TLB의 CPU 히트 것이 속도가 크게 개선되는 페이지 테이블의 수가 감소한다.

페이지 테이블 4. 거 페이지 프로세스간에 공유하지만, 또한 페이지 테이블의 크기를 줄일 수있다. 여기에 당신은 실제로 탭 처리 메커니즘에 리눅스 결함을 반영 할 수 있습니다. 같은 AIX와 같은 다른 운영 체제, 공유 메모리 세그먼트는 메모리, 프로세스가 동일한 페이지 테이블을 공유하는 동안 리눅스의이 문제를 방지 할 수 있습니다. I 시스템 유지 보수의 설정처럼, 연결의 수는 일반적으로 소비에 리눅스의 방법으로 페이징 프로세스, 시스템 메모리 페이지 테이블의 대부분을 될 것입니다 경우 SGA 인스턴스는 60GB에 관한, 5000 이상입니다.

 

그럼, 어떻게 오라클 대용량 메모리 페이지 (거대한 페이지)을 사용하려면? 다음 단계는 구현됩니다. 데이터베이스는 경우 예를 들어 여기 18G, 18G에 대한 SGA 조정 후 약간의 시간을 포함하기 때문에 :

시스템을 확인,은 / proc 디렉토리 / meminfo 파일 확인 1. 것은 HugePage을 지원합니다 :



에서는 hugepages 전체 시스템 구성에 큰 메모리 페이지의 수를 나타냅니다. 에서는 hugepages 무료 메모리는 나중에 설명 무료 잘못된 곳, 방문하지 않은 페이지의 많은 수를 나타냅니다. 에서는 hugepages RSVD 페이지의 수를 할당하지만, 아직 사용하지되었음을 나타냅니다. Hugepagesize 큰 메모리 페이지 크기를 나타내고,이 2메가바이트, 4메가바이트 가능한 커널 구성에 약간의 관심이다.

 

예를 들어에서는 hugepages는 11기가바이트, 최대 10GB SGA_MAX_SIZE, 8GB의 SGA_TARGET의 총. 그런 다음, SGA_MAX_SIZE 할당 HugePage 메모리에 따라, 여기 10기가바이트 데이터베이스 시작이다, HugePage의 실제 메모리 무료 11-10 = 1G입니다. 그러나 SGA_TARGET 만 8 기가 바이트, 2 기가 바이트 다음의 HugePage_Free 2 + 1 = 3기가바이트, HugePage_Rsvd 메모리가 2기가바이트입니다 액세스가되지 않습니다. 당신이 실제로 다른 경우 1GB 만에 사용할 수있는 무료 진정한 의미입니다 만 1GB의.

메모리 페이지의 1. 계획 수를 설정합니다. 지금까지 만 대용량 메모리 페이지의 소수 메모리 세그먼트 및 다른 종류의 메모리를 공유했다. 대용량 메모리 페이지에 대한 물리적 메모리되면, 다음 물리적 메모리는 개인 메모리 처리하는 것과 같은 다른 목적으로 사용할 수 없습니다. 당신은 대형 페이지에 너무 많은 메모리가 될 수 없습니다. SGA Oracle 데이터베이스, 대형 페이지의 다음 숫자로 사용 우리는 일반적으로 대용량 메모리 페이지 :

HugePages_Total = CEIL (SGA_MAX_SIZE / Hugepagesize) + N

예를 들어, 데이터베이스가 18기가바이트 SGA_MAX_SIZE으로 설정되어, 다음 페이지의 수는 (18 * 2분의 1,024) + 2 = 9218 CEIL 수있다. 여기서 플러스 N, HugePage 메모리 필요성 1-2 전형적 SGA_MAX_SIZE보다 약간 크게 설정된다. 우리는 IPCS -m 명령에 의해 공유 메모리 세그먼트의 크기, 당신은 공유 메모리 세그먼트의 크기는 SGA_MAX_SIZE에 대한보다 실제로 더 큰 볼 수 있습니다 참조하십시오. 오라클 서버, 공유 메모리 세그먼트 필요가 각 인스턴스 여분의 부품, 더 큰 N 값에 대해 고려해야 할 여러 인스턴스가있는 경우. 또한, 오라클 데이터베이스 또는 모든 대형 페이지는 어느 대용량 메모리 페이지를 사용하지 않는, 따라서 적절 HugePages_Total 메모리의 낭비가 발생합니다.

SGA_MAX_SIZE 계산 제외하고, 또한보다 정확하게 산출 HugePages_Total IPCS -m 공유 메모리 세그먼트 크기에 의해 획득 될 수있다.

  HugePages_Total = SUM (CEIL (share_segment_size / Hugepagesize))

 

2. 수정하십시오으로 /etc/sysctl.conf 파일에 다음 줄을 추가합니다 :

vm.nr_hugepages = 9218

그런 다음 구성을 확인하는 sysctl을 -p 명령을 실행합니다.

여기 파라미터가 큰 페이지의 개수가 2 단계에서 산출 vm.nr_hugepages. 그런 확인은 / proc / meminfo 파일, 숫자 세트보다 작은 HugePages_Total 경우,이 서버를 다시 시작해야 이러한 대형 페이지에 사용되는만큼 연속적인 물리적 메모리가 없음을 나타냅니다.

 

는 /etc/security/limits.conf 파일에 다음 줄을 추가합니다 :

오라클 소프트 memlock을 18878464

오라클 하드 memlock을 18878464

여기에 오라클 사용자가 KB에서 메모리 크기를 잠글 수 있습니다 설정합니다.

그런 다음 다시 오라클 사용자가 ulimit를 -a 명령을 사용하여 데이터베이스 서버에 연결, 당신은 볼 수 있습니다 :

최대 lockedmemory (킬로바이트 -l) 18,878,464

여기 memlock을도 무제한으로 구성됩니다.

 

4. SGA 설명서를 사용하여 데이터베이스의 관리는 자동 모드의 요구가 변경 될 경우, 0보다 큰 값으로 설정, 즉 SGA_TARGET_SIZE. 단 HugePage가 PGA 사용할 수없는 메모리를 공유 때문에 11g 들어, AMM 즉이 0보다 큰 MEMORY_TARGET되도록 설정 만 SGA와 PGA 각각 만 AUTO 모드 SGA 동일한 관리를 제공 할 수없고, 사용할 수 없다.

 

5. 마지막으로, 데이터베이스를 시작 확인 여부 / proc 디렉토리 / meminfo 파일 HugePages_Free이 감소되었습니다 볼 수 있습니다. 당신이 감소 된 경우 나타내는 그 HugePage 메모리에 사용되어왔다. 실패한 데이터베이스 서버의 / proc 디렉토리를 볼 때, /이 인수를 찾을 수 없습니다 모든 시스템 매개 변수 vm.nr_hugepages 전혀 관련 정보 HugePage,의 sysctl -a보기 없었다 발견 meminfo 파일. 리눅스 커널이 HugePage이 기능을 컴파일되지 않기 때문입니다. 우리는 HugePage 수 있도록 다른 커널을 사용해야합니다.

 

보기 /boot/grub/grub.conf 파일 :

 

 

시스템이 "젠"단어 커널을 사용하는 것을 발견, 우리는이 파일을 수정 변경 기본 = 0 기본값 = 2, 커널 두 종류의 앞에 숫자 번호와 마스크, 다음, 새로운 커널이 발견되었습니다 데이터베이스 서버를 다시 시작 HugePage을 지원합니다.

 

데이터베이스가 큰 메모리 페이지를 활성화하는 것입니다 후 성능 문제는 여기에 설명조차 표시되지 않은 SGA의 경우 증가했다. 관측은 / proc / meminfo 파일 데이터, 페이지 테이블이 차지하는 메모리는 4,500메가바이트 저감 ​​원래 비해 120M 이하로 남아있다. 이 시스템이 매우 안정적으로 실행되는 동안 CPU 사용률은 적어도 버그가 나타나지 이용 HugePage에서 발생하는, 이전에서는 hugepages의 사용에 비해 하락 관찰되었다.

 

테스트는 OLTP 시스템, 오라클 데이터베이스, 데이터베이스 처리 및 응답 시간이 다양한 각도로 개선 실행 리눅스에 HugePage을 사용하도록 설정하는 것이 보여, 최대 심지어 10 %에 도달 할 수 있습니다.

 

개요

본 논문, 사례 연구에서, 얼마나 많은 페이지를 사용하려면 적절한 매개 변수를 설정하는 리눅스 운영 체제의 성능면에서 큰 메모리 페이지의 역할을 제시했다. 이 문서의 끝에서, 나는 당신이 리눅스 운영 체제에서 Oracle 데이터베이스를 실행할 때, 제안 추가로 시스템 성능을 향상이 문서의 경우가 발생하지 않도록 할 성능 문제로 큰 메모리 페이지, 또는에 수 있습니다. 그것은 HugePage 소수 민족 추가 비용은 성능 특성을 개선 할 수있을 것이다,라고 할 수있다. 또한 좋은 소식은 리눅스 커널의 새 버전은 대용량 메모리 페이지를 사용하는 대용량 메모리 페이지뿐만 아니라 유일한 공유 메모리이 유형의 메모리를 사용하는 것이 더 광범위하고 더 편리 할 수 ​​있습니다 리눅스에서 응용 프로그램을 실행하기 위해, 투명 거대한 페이지를 제공한다는 것입니다 . 이 특성 변화가 발생하는 경우, 우리가 기다려 보자.

고마웠다 끝

나에 대해서

 

.................................................. .................................................. .................................................. .................................................. .................................................. ................................................

재 인쇄 기사의 마이크로 채널 대중 번호로 ●는 적시에 침해, 제발 연락처 밀 모종 감사, 사심없는 헌신의 원래 저자를 삭제하는 경우

● 동 ITPUB (을 바탕으로 http://blog.itpub.net/26736162 ), 정원 블로그 ( http://www.cnblogs.com/lhrbest ) 및 개인 마이크로 채널 공용 수의 (xiaomaimiaolhr) 동기 업데이트

● QQ 그룹 : 230161599 마이크로 채널 그룹 : 속삭임

● 원래 주소 : http://mp.weixin.qq.com/s?__biz=MjM5MDAxOTk2MQ==&mid=2650271630&idx=1&sn=cff27dce68652932016c43c9ba477832&chksm=be487798893ffe8e7ecbf93bda6f2d180d8425d0e12a3091d339cd890e749de2aa51d9f96e65&scene=1&srcid=0912gUd6GpoI9uSUCQCZrXOw#rd

밀 모종 공유하기 ● 기타 데이터 : http://blog.itpub.net/26736162/viewspace-1624453/

● 밀 식물 구름 디스크 주소 : http://blog.itpub.net/26736162/viewspace-1624453/

● QQ 그룹 : 230161599 마이크로 채널 그룹 : 속삭임

나를 QQ 친구 (642 808 185)를 추가하시기 바랍니다 ● 접촉, 추가 된 이유를 언급

밀 모종에서 파생 ● 문서 내용이 침해에 경우, 노트를 정리 또는 부정 이해하시기 바랍니다!

● 【저작권, 복제 문서]를 체인에 따라 소스 주소를 표시하거나, 법적 책임, 수 있도록

.................................................. .................................................. .................................................. .................................................. .................................................. ................................................

전화 , xiaomaimiaolhr : 긴지도는 밀 마이크로 채널 대중 번호 모종의 하단 측면에 초점을 두 가지 차원 코드 나 2 차원 코드 스캔 마이크로 채널 클라이언트를 식별 눌러 무료 가장 실제적인 데이터베이스 기술을 배우기.

 

.................................................. ..........................................

● 밀 모종 마이크로 가게 : https://weidian.com/s/793741433?wfr=c&ifr=shopdetail

● 밀 식물 시리즈 게시 된 데이터베이스 카테고리 : http://blog.itpub.net/26736162/viewspace-2142121/

● 밀 모종 OCP, OCM, 고 가용성 네트워크 클래스 : http://blog.itpub.net/26736162/viewspace-2148098/

.................................................. ..........................................

의 사용은 마이크로 채널 클라이언트 다음 QR 코드를 스캔 밀 모종 마이크로 채널 공개 번호 (에 초점을 xiaomaimiaolhr ) 가장 실질적인 데이터베이스 기술을 배웁니다.

 

추천

출처www.cnblogs.com/jinanxiaolaohu/p/12321542.html