메모리 집약적인 작업을 위해 64GB RAM 컴퓨터에서 파티션 크기 교체

메모리 집약적인 작업을 위해 64GB RAM 컴퓨터에서 파티션 크기 교체

64GB RAM과 240GB가 있습니다.SSD메모리 집약적인 계산(기계 학습, 데이터 마이닝 등)에 사용할 내 컴퓨터에서. 제가 인터넷에서 찾은 대부분의 조언은 2-4-8GB RAM 컴퓨터에 관한 것이며 RAM 스왑 파티션 크기의 2배(즉, 128GB)를 권장합니다.

128GB 스왑 파티션을 만드는 것이 합리적입니까? 거대한 스왑 파티션을 만들면 어떤 이점이 있습니까?

물리적 RAM이 부족할 경우 다음 사항을 올바르게 이해하고 있습니까?

  1. 스왑이 없으면 '메모리 부족' 오류가 발생합니다.
  2. 스왑이 있으면 RAM 페이지 중 일부가 스왑 파티션에 복사되고 프로그램은 계속 실행됩니다(더 느리기는 하지만).

어떤 사람들은 읽기/쓰기 주기가 제한되어 있기 때문에 SSD에서 교체하는 것은 좋지 않은 생각이라고 말합니다. 스왑을 사용하면 SSD 읽기/쓰기 주기가 얼마나 빨리 소진됩니까(제가 아는 한, 쓰기 IOPS는 약 50000입니다)?

저는 리눅스를 사용하고 있습니다(우분투 14.04(신뢰할 수 있는 타르)).

지금은 16GB 스왑을 설정하려고 합니다. 이는 확실히 충분하고(예를 들어 RedHat에서는 4GB를 제안함) 16GB의 디스크 공간은 실제로 큰 문제가 아니기 때문입니다.

답변1

아마도 소량의 스왑만 필요할 것입니다. 컴퓨터의 일반적인 작업 세트에 필요한 RAM이 충분할 때(아마도 그렇습니다), 다음 두 가지 사항에 대해서만 스왑이 필요합니다.

  1. 디스크 캐시를 위한 더 많은 공간을 확보하기 위해 RAM에서 절대 액세스할 수 없는 정보를 얻으려면 스왑이 필요합니다. 많은 응용 프로그램은 시스템 시작 시 실행되며 다시는 액세스되지 않습니다. 더러워진 페이지가 RAM에 영원히 갇히는 것을 원하지 않습니다. 그래서 그것들을 보관하려면 스왑이 필요합니다.

  2. 결코 채워지지 않을 할당을 처리하려면 스왑이 필요합니다. 이 공간은 사용되지 않더라도 사용 가능해야 합니다. 이것이 없으면 시스템은 모든 할당을 한 번에 사용할 수 있는 백업 저장소가 충분하지 않기 때문에 여유 물리적 RAM이 많더라도 메모리 할당을 거부해야 합니다.

이들 중 어느 것도 많은 양의 스왑이 필요하지 않습니다. 예를 들어 16GB이면 충분합니다. 목적은 속도를 희생하면서 더 큰 작업 세트를 실행하도록 하는 것이 아닙니다. 목적은 64GB를 효과적으로 사용하고 정크로 막히거나 결코 발생하지 않을 특별한 경우를 위해 예약할 필요가 없도록 하는 것입니다.

(저는 4GB이면 충분할 것이라는 Bert의 의견에 동의합니다.)

답변2

빨간 모자64GB 머신에서는 4GB를 권장합니다..

그러나 사이징 교환은 과학이라기보다는 예술에 가깝습니다. 이는 머신이 사용되는 용도, 보유하고 있는 디스크 공간 및 메모리 양, 기타 요인에 따라 달라집니다. 기억하다,나중에 언제든지 스왑을 더 추가할 수 있습니다.

2X 물리적 메모리 규칙을 사용하는 것은 요즘 시스템의 메모리 양에 따라 구식입니다. 그러나 자신이 무엇을 하고 있는지 알지 못한다면 스왑 없이 실행하는 것은 권장되지 않습니다. 4GB를 권장하는 것이 좋은 출발점입니다.

답변3

Linux에서는 사용 가능한 총 가상 메모리(RAM + SWAP)가 한 번에 실행하려는 모든 프로세스와 최대 가상 공간에 충분하도록 충분한 스왑이 필요합니다.

이보다 적은 스왑이 있거나 스왑이 전혀 없으면 다음과 같은 상황이 발생합니다. 페이지를 할당하려고 하면 시스템에 메모리가 부족해집니다. 그러나 스왑이 없더라도 이는 여전히 소프트 오류입니다. 시스템에는 공간을 확보하기 위해 제거할 수 있는 "피해자" 페이지가 많기 때문입니다. 즉, 실행 파일과 같은 모든 파일 기반 메모리 매핑 페이지가 있습니다. 그리고 공유 라이브러리!

시스템이 데이터를 위해 점점 더 많은 공간(교환할 수 없음)을 요구함에 따라 실행 코드(공유 라이브러리 및 실행 파일)가 점점 더 많이 비워지고 작업 세트가 점점 더 긴밀한 세트로 정리됨에 따라 끔찍한 스래싱이 발생합니다. 페이지.

스왑 공간은 익명(파일 매핑 아님) 페이지를 스왑 아웃할 수 있는 장소를 제공하여 이 문제를 완화합니다. 즉, 실행 코드가 메모리에 유지될 수 있도록 메모리 할당에 사용되는 페이지입니다.

그럼에도 불구하고 메모리 집약적인 작업을 자주 실행하지 않는 경우 대부분의 경우 스왑 없이 실행하고 필요할 때 스왑 파일(전용 파티션 대신)을 수동으로 구성할 수 있습니다. 즉시 스왑 파일을 만들려면 루트가 되어 다음을 수행하십시오.

dd if=/dev/zero of=/path/to/swapfile size=$((1024 * 1024)) count=32768  # 32 Gb.
mkswap /path/to/swapfile
swapon /path/to/swapfile

더 이상 필요하지 않은 경우:

swapoff /path/to/swapfile
rm /path/to/swapfile

노트:

  1. 최소한 RAM만큼의 스왑을 구성할 필요는 없습니다. 이 경험 법칙은 스와핑 설계 방식으로 인해 엄격한 요구 사항이었던 운영 체제로 거슬러 올라갑니다.

  2. 사용 가능한 메모리가 없을 때 Linux를 실패하게 만드는 방법이 있습니다. 즉, 다음 sysctl 항목의 값을 조작하는 것입니다.

    vm.overcommit_memory
    vm.overcommit_ratio
    

답변4

머신에 적용하려는 워크로드를 실행하려면 특정 양의 메모리가 필요하며(최대 로드를 처리하려면 방정식에 충분한 양을 추가해야 함) 최소한 그 정도를 갖도록 컴퓨터를 구성해야 합니다.

최신 운영 체제는 물리적 메모리와 스왑 공간의 조합으로 가상 메모리를 제공하므로 시스템에서 사용할 수 있는 것보다 더 많은 메모리가 필요한 경우~ 해야 하다공백을 메우기에 충분한 스왑 공간을 추가하십시오. 즉, 최대 80GB가 필요하고 머신에 64GB가 있는 경우 16GB 스왑이 필요합니다.

일반적으로 운영 체제 설치 프로그램은 초기 스왑 영역을 만들도록 요청합니다(이것이 가장 간단하고 작은 컴퓨터에도 설치할 수 있기 때문입니다). 일반적인 Unix 작업에 대한 좋은 경험 법칙은 가상 메모리 크기를 다음과 같이 설정하는 것입니다. 실제 메모리의 3배이므로 일반적으로 이것이 권장됩니다. 그러나 사용 패턴에 대해 더 많이 알고 있으므로 이를 적절하게 변경할 수 있습니다.

메모리 부족이 항상 적다면 스왑 공간 없이 작업하는 데 아무런 문제가 없습니다. Linux는 사용되지 않은 메모리를 디스크 캐시로 투명하게 사용합니다.

관련 정보