OOM 스왑 영역과 : 1 일 3 분 연습 운영 체제 (12) 사기꾼

나는 점 직렬 요령 참조

OOM 및 스왑 파티션

프로세스 가상 메모리 공간이 전체 물리적 메모리 공간에 매핑, 그래서 자신이 사용하는 때입니다 더 많은 공간을 할당하기 위해 단순히 운영체제를 요청, 전체 물리적 메모리를 사용할 수, 전체 물리적 메모리를하는 과정에 보인다 할 수 있습니다.

물리적 메모리 공간을 적용하는 끝없는 과정이 결국 물리적 메모리로 이어질 것입니다 경우는 새로운 프로세스를 생성해야하기 때문에 운영 체제, 새로운 프로세스를 생성 할 수 있도록 그러나 운영 시스템은, 죽은 또는 거의 죽은 프로세스입니다 실행되고 있지 않습니다 가상 메모리를 할당합니다.

따라서, 운영 시스템은 물리적 메모리 사용량을 모니터링하는 데 필요한 경우 죽거나 거의 죽은 물리적 메모리가 발생하고, 처리는 메모리 오류의 할당을 요청하는 것을 계속한다면 메모리 부족 (OOM) 메모리 부족을 나타내고, 발생시 OOM 운영체제가 트리거 할 때 OOM 킬러 하여 대용량 메모리를 해제하는 메모리 집약적 인 프로세스를 종료 프로세스 목록으로부터 선별 프로그램. 그러나 분명히, 이것은 매우 쉬운 방법이 아니다, 많은 서버 단지 메모리를 많이 신청 한 서비스 프로세스, 서비스가 중지의 원인이 OOM 킬러를 살해 될 가능성이있는 경우 전용 또는 주로, 서비스를 실행합니다.

메모리 문제에서 너무 오래 제안에 사실, 초기 메모리는 일반적으로 작은, 그것은 쉽게 스왑 파티션의 개념 (스왑 파티션)입니다.

가상 주소 공간의 크기의 범위, 당신은 디스크 스왑 파티션에 중요한 데이터의 일부의 물리적 메모리 부족 복사 할 수있는 물리적 메모리 공간에서 실제 메모리의 실제 크기를 초과 할 수 있도록 스왑 파티션은 메모리 사용량과 디스크입니다 메모리 공간, 아웃 데이터를 복사 한 것들을 한 다음 필요할 때 스왑 파티션에서 다시 메모리로 복사, 그래서 더 이상 그렇게 쉬운 OOM 오류 있도록.

그러나, 결국은 디스크에 스왑 파티션이며, 메모리와 디스크 사이에 데이터를 전송하는, 그래서 당신은 스왑 파티션 속도의 데이터를 액세스 할 때 매우 느려집니다. 현재 대용량 메모리에서별로 스왑 파티션을 사용할 필요가 저렴한만큼 상황이다.

과정이지만 이제 파티션이 거의 편리하지 교환,하지만 기술과 간단한 소개에 필요한 개념을 포함한다.

해결해야 할 두 번째 문제에 스왑 파티션을 사용하여 디스크 스왑 파티션 페이지에 가상 주소 공간에 매핑 페이지를 만드는 방법입니다. 즉, 가상 페이지 스왑 페이지를 번역하는 방법, 그리고 어떻게 액세스 할 때 물리적 메모리 페이지 아니다 알고있다.

실제 메모리에 의거하여 스왑 영역에 도입, 각 페이지가 가상 있기 때문에 본 비트 페이지가 메모리에 존재하는지 여부를 나타 내기 위해이 비트 값이 1이면, 그 경우, 메모리에 상주 0는 메모리보다는 스왑 파티션을 나타낸다. 모든 페이지가 메모리에 저장되어 있으며, 상기라고도 상주 세트 (주민 설정).

메모리가 발견되지 않는 경우 가상 페이지 액세스 시간,이 시간이 생성됩니다 때 페이지 폴트 이상 (페이지 오류)이라고도 페이지 미스 (페이지 미스를) 다음 운영 체제에, 스왑에서, 페이지 오류 처리기를 시작합니다 해당 페이지를 찾을 수 파티션 및 메모리에 복사 (분명히 가상 메모리 페이지 주소 스왑 파티션 페이지로 번역이 필요하다). 페이지에 프로세스라고 스왑 파티션 복사에서 페이지를 스왑 (페이지를).

이 페이지에서 스왑 페이지에서 긴장 상태에있다이 때 실제 메모리를 나타내는 스왑 파티션을 사용 되었기 때문에이 방법을 메모리에 새로운 문제를 만들어? 사실, 또한이 메모리를 확보하기 위해, 페이지를 만들기 위해 하나 이상의 페이지 페이지의 과정을해야합니다. 그래서 불운 페이지하는 페이지 그것을 밖으로인가? 여기에 전략 알고리즘이라고 나타났다 페이지 교체 정책 알고리즘 페이지 출력해야 할 페이지를 결정하는 데 사용을, 같은 무작위 임의의 알고리즘이 페이지를 교체하여 선택 입력하기 전에 해당 페이지를 스왑하는 FIFO 알고리즘의 사용으로, 선택 LRU 알고리즘을 사용 최근 최소 자주 페이지 등을 사용했다.

사실, 페이지 출력에 추가로 작은 공간을 확보하기 위해 메모리 페이지를 스왑, 운영 시스템은 또한 빈 페이지 (물론, 이것은 물리적 페이지입니다)의 수에 두 개의 물 라인을 설정하십시오 하이 워터 마크 (높은 워터 마크, HW) 및 낮은 수위를 라인 (낮은 워터 마크, LW). 운영 체제가 빈 페이지의 수가 낮은 물 라인의 값보다 작다는 것을 발견했을 때, 그것은 스왑 데몬 (또한 페이지 데몬이라고도 함)라는 백그라운드 스레드 자동으로 시작됩니다 kswapd를 , 그리고 모든 프로세스를 스캔 스레드 후보의 일부를 선택 과정은 모든 페이지 무료 물리적 메모리 페이지 수까지 스왑 파티션에 복사됩니다 이러한 프로세스는 높은 물 라인의 값에 도달.

팁 : 하이 워터 마크와 낮은 워터 마크

컴퓨터 분야에서 흔히 사용 가능한 자원의 수의 프로세스를 모니터링하는 고수위 및 저수위 라인을 사용. 가까운 경우 또는 워터 마크 (water mark) 상기와 같은 자원 가용성 값의 개수는, 충분한 리소스를 나타낸다. 자원 가용성의 수는 해당 자원의 제약을 나타내는 낮은 물 마크 아래로되었을 때, 우리는 몇 가지 자원을 복구하기 위해 몇 가지 조치를 취해야한다.

그 중, 스왑 파티션에 모든 페이지가 호출 과정으로 교체 OUT 스왑 , 그 과정에서 과정에 스왑 파티션 복사 (예 : 프로세스에 다시 예정대로) 모든 페이지가 호출 에 스왑을 . 다음의 구분에 아웃 페이지와 페이지와이 두 개념 :

  • 및 페이지 출력 페이지 또는 프로세스 또는 일부 페이지 중 사본입니다
  • 모든 페이지 프로세스의 또는 축소 복사본 아웃 스왑과 스왑

스왑 파티션의 실제 사용은 메모리가 긴장의 상태를 입력했을 때 때문에, 기본적으로 스왑 파티션을 포함 할 것이다 후 프로세스의 대부분은, 표시 및 페이지 오류를 계속 수행하지 스왑 파티션에 대해서, 다음 가장하거나 할 수 없다 발생할 수 페이징 프로세스 지터 전체 효율이 낮고,이 상태가없는 충분한 메모리 공간이 될 때까지 계속되도록 (탈곡). 이 시간뿐만 아니라 예를 들어, 등등, 특정 프로세스, 메모리를 많이 사용 재시작 서비스를 죽이고 다시 시작 기계와 아무 상관이없는, 메모리 공간을 확보하기 위해 다른 조치를 취할 수 있습니다.

추천

출처www.cnblogs.com/f-ck-need-u/p/11793972.html