KSM을 사용하면 특히 RAM에 캐시된 공통 운영 체제/응용 프로그램 파일을 포함하여 가상 머신에서 동일한 메모리 페이지를 병합할 수 있습니다.
KSM을 사용하여 컨테이너의 메모리 요구 사항을 유사하게 줄일 수 있습니까?
답변1
아니요.
KSM은 익명(개인) 페이지만 병합하고 페이지 캐시(파일) 페이지는 병합하지 않습니다.
가상 머신에서만 작동합니다.모두VM의 메모리는 호스트 프로세스에 개인 페이지로 저장됩니다. 예를 들어 호스트의 qemu 프로세스입니다.
(반대로, 예를 들어 Docker 사용자는 동일한 이미지 간에 페이지를 공유하거나 공통 조상을 갖고 사용할 수 있습니다.overlayfs 기반 스토리지 드라이버).
또한 현재 KSM 인터페이스에는 madvise(... MADV_MERGEABLE)
잠재적으로 공유 가능한 모든 범위가 필요합니다. 컨테이너의 모든 프로세스는 맵을 생성할 때 이 호출을 수행해야 합니다. 분명히 이 인터페이스는 사용을 포함하되 이에 국한되지 않는 다양한 특수 목적 프로세스에 적용하기가 더 쉽습니다 qemu
.