최근에 나는 스왑 영역에 정확히 0바이트의 사용되지 않은 램이 있고 여유 램(무료는 아니지만 여유 + 버퍼 + 캐시의 합계)이 60%인 상자(실제로는 웹 서버 VM)를 보았습니다. 총 가상 머신 메모리. 이전에 이것을 본 적이 없으므로 이것이 좋은 구성인지 궁금합니다(박스 및 애플리케이션용).
가상 머신의 관리자는 이것이 완전히 정상이라고 생각하며 상자를 조정하는 일반적인 방법이라고 말했습니다.
아이디어는 상자에 콜드 메모리 페이지가 많으면 커널이 이를 정리하여 "실제" 메모리 페이지를 확보하여 데이터 캐싱에 사용할 수 있다는 것입니다.
저는 빠른 상자를 원할 경우 스왑이 마지막으로 사용할 수 있는 방법이라는 것을 알고 있었습니다. 그래서 저는 스왑 가능성을 낮은 값으로 설정하곤 했습니다(그래서 커널은 페이지 스왑을 좋아하지 않았습니다). 그러나 이 사람의 접근 방식은 스왑 공간만큼 많은 데이터를 스왑 아웃하여 더 많은 캐시를 확보하는 것이었습니다. 예, 그는 커널이 스왑된 페이지를 캐시할 수도 있으므로 스왑을 유휴 상태로 유지하는 데 아무런 이점이 없다고 말했습니다.
여유를 좀 가지십시오. VM Seap을 최적의 방식으로 사용해야 하며, 커널 디스크 캐시를 보다 효율적으로 사용할 수 있는 방식으로 RAM을 확보해야 합니까?
정확하게 말하면 현재 1Gb의 스왑 공간(100% 사용됨), VM의 메모리는 32Gb, 사용 가능한 메모리는 13Gb입니다.
답변1
소량의 스왑(32GiB RAM에 비해 1GiB는 작음)만 사용하면 문제가 없습니다. 이는 가상 머신 관리자가 설명한 대로를 의미합니다. RAM의 가용성이 주어지면 스왑 영역에 있는 모든 항목은 사용되지 않습니다. 이를 유지하고 더 긴급한 작업을 위해 해당 물리적 메모리를 사용하는 것이 좋습니다. 활성 워크로드 또는 디스크 캐시.
과도한 스왑 사용은 스왑 볼륨이 크거나 메모리 부족으로 인해 페이지가 스왑되는 경우에만 문제가 되며, 더 중요한 것은 스왑하는 경우입니다.활동매우 중요,즉if vmstat
는 페이지가 스왑 인 및 아웃되었음을 나타냅니다. 이는 시스템이 충돌하여 페이지를 제거하는 데 시간이 소요되고 다시 다시 교체해야 함을 나타냅니다. 이는 RAM 양이 시스템 작업 부하에 비해 너무 작은 경우에 발생합니다.
제가 이 글을 쓰고 있는 시스템은 더 많은 스왑 공간을 갖고 있으며 가상 머신과 비슷한 상황에 있습니다.
$ free -m
total used free shared buff/cache available
Mem: 32054 19405 1098 2365 11550 9827
Swap: 6410 6410 0
그러나 상호작용 성능은 양호하며 vmstat
스와핑 활동이 표시되지 않습니다.