Linux에게 스왑 영역으로 무엇을 해야 할지 알려주십시오.

Linux에게 스왑 영역으로 무엇을 해야 할지 알려주십시오.

Ubuntu 20.04 Server Edition을 사용하고 있습니다.

나는 512GB의 RAM을 가지고 있는데, 그 중 약 130GB는 일반적으로 컴퓨터에서 실행되는 프로세스에 사용됩니다. 또한 두 개의 램디스크(tmpfs)가 있는데 둘 다 500GB로 구성되어 있습니다.

tmpfs 디스크는 사용하는 RAM의 양을 확장 및 축소하므로(가득 차 있는 정도에 따라) 일반적으로 램디스크는 매우 적은 양의 RAM(총 200GB 정도)을 사용합니다.

약 1000GB 정도의 빠른 NVMe 드라이브로 교체했습니다. 때때로 RAM 사용량이 짧은 기간(단 몇 초) 동안 급증할 수 있습니다.

이러한 순간에 Linux가 항상 프로세스에 메모리를 제공하고 드라이브의 스왑 공간을 사용해야 한다고 어떻게 지시합니까?

답변1

내가 아는 한(그리고 FelixJN의 링크도 동의하는 것 같습니다) RAM의 모든 것은 동일하게 교체 가능하며 콘텐츠 교체 결정은 데이터 유형이 아닌 최신성에 따라 달라집니다. 내 생각에는 이것이 귀하의 사용 사례에도 좋은 경험적 방법이라고 생각합니다!

그러나 최소한 약간의 속일 수는 있습니다.

512GB RAM 시스템이 NUMA 시스템이라고 가정하면 특정 노드의 메모리에 tmpfs를 할당하고( man tmpfs: 참조) 모든 메모리를 적어도 하나의 노드에 집중시킬 수 있습니다.mpol

하지만 솔직히 말해서 200GB(!)의 데이터를 SSD에 직접 저장하는 대신 매우 큰 파일 시스템 버퍼와 매우 낮은 압력을 사용하여 해당 데이터를 스토리지에 플러시하는 것이 효과가 있을까요? 프로세스에 메모리가 부족하면 커널은 버퍼를 SSD로 플러시하기 시작하고 이전에 tmpfs에 넣은 파일에 대한 액세스를 제한하여 원하는 결과를 얻습니다. 메모리 압력이 높으면 임시 파일이 SSD에 저장되고 처리됩니다. 충분한 메모리를 사용할 수 있는 경우 RAM에 있습니다.

관련 정보