리눅스 커널에게 버퍼 캐시에 특정 비율의 메모리 만 사용하도록 지시하는 방법이 있습니까? 내가 알고 /proc/sys/vm/drop_caches
일시적으로 캐시를 지우는 데 사용할 수 있지만 영구적 인 설정이 그 메인 메모리의 50 %를 예보다 이상 성장에서 방지를?
내가 원하는 이유는 디스크에서 데이터를 지속적으로 제공하고 몇 시간 내에 전체 물리적 메모리를 버퍼 캐시로 사용하도록 관리하는 Ceph OSD를 실행하는 서버가 있기 때문입니다. 동시에 많은 양의 (수십 GB) 물리적 메모리를 할당 할 응용 프로그램을 실행해야합니다. 일반적인 생각과는 달리 (버퍼 캐시에 관한 거의 모든 질문에 대한 조언 참조) 클린 캐시 항목을 삭제하여 메모리를 자동으로 확보하는 것은 즉각적 이지 않습니다 . *), 캐시를 비운 후 (사용 echo 3 > /proc/sys/vm/drop_caches
) 동일한 응용 프로그램이 거의 즉시 시작됩니다.
(*) 시작 시간의이 분 동안 응용 프로그램은 새 메모리에 결함이 있지만 Vtune에 따르면라는 함수의 커널에서 100 %의 시간을 커널에서 보냅니다 pageblock_pfn_to_page
. 이 기능은 거대한 페이지를 찾는 데 필요한 메모리 압축과 관련이있는 것 같습니다. 실제로 조각화가 문제라고 생각합니다.