개요

KSM (Kernel Shared memory)는 커널에서 중복되는 메모리를 하나로 COW로 만들어서, 통합시키는 기술의 이름이다. KSM기능은 CONFIG_KSM=y로 설정할 수 있으며, 리눅스 2.6.32에서 등장하였다.

KSM는 시초에는 KVM과 하이퍼바이저로써, VM의 중복되는 데이터를 하나로 저장하기 위해서 등장하였지만, 많은 General Application특히 중복된 데이터를 많이 만들어 내는 Application과 유용하게 쓰일 수 있다. sysfs Inferface를 통해서, KSM이 한번에 scan하는 메모리의 크기와 같은 여러 파라미터를 조작할 수 있다.

madvise를 통해서도 KSM의 동작을 조절할 수 있다. MADV_MERGEABLE, MADV_UNMERGEABLE은 KSM이 선택된 영역에서 동작 여부를 조절한다. CONFIG_KSM=n으로 설정된 경우, EINVAL을 return한다.

참고

  1. https://www.kernel.org/doc/html/latest/admin-guide/mm/ksm.html