Community

Kernel Samepage Merging (KSM) 최적화 - 메타

인스타그램 웹 어플리케이션은 오래된 서버와 메모리, CPU 의 압박으로 인하여 어려움을 겪고 있었는데, Kernel Samepage Merging (KSM) 을 통하여 64GB 시스템에서 약 6GB의 메모리가 절약할 수 있었다고 소개하고 있습니다. Kernel Samepage Merging (KSM) 은 간단하게 설명하면, 단일 복사본을 공유하여 익명 페이지의 중복을 제거하는 것입니다. Kernel Samepage Merging (KSM) 은 `madvise()` 를 통하여 후보 메모리 영역을 추가하였는데, 커널 6.4 에서 새로운 `prctl()` 함수를 통하여 이제는 * PR_SET_MEMORY_MERGE 플래그를 사용하면 프로세스의 모든 호환 가능한 VMA에 대해 KSM을 활성화 * 해당 설정은 프로세스가 분기될 때 상속되므로 모든 하위 항목의 호환 가능한 VMA에도 KSM이 활성화 * PR_GET_MEMORY_MERGE 플래그를 사용하여 KSM이 프로세스에 대해 활성화되었는지 여부를 쿼리 와 같은 기능을 수행할 수 있습니다. 최적화는 상황에 따라 달라질 수 있는데, 인스타그램의 경우 * 워크로드는 단일 컨트롤러 프로세스와 32개 이상의 작업자 프로세스로 특징 * 작업 프로세스는 시작할 때 인터프리터를 메모리에 로드하고 요청 시 로드되는 다른 많은 데이터 구조도 공유 하는 구조로 되어 있기 때문에 Kernel Samepage Merging (KSM) 이 유용할 수 있었습니다. 즉, Meta 엔지니어들은 잠재적으로 공유할 수 있는 메모리가 많기 때문에 KSM이 해당 작업 부하에 적합할 것이라고 생각한 것입니다. https://lwn.net/Articles/953141/

알림

알림이 없습니다