커널 버전 2.6.28부터 Linux는 LRU ( Split Least Recent Used) 페이지 교체 전략을 사용합니다. 프로그램 텍스트 또는 공유 라이브러리와 같은 파일 시스템 소스가있는 페이지는 파일 캐시에 속합니다. 파일 시스템 백업이없는 페이지를 익명 페이지라고하며 응용 프로그램 등을 위해 예약 된 스택 공간과 같은 런타임 데이터로 구성됩니다. 일반적으로 파일 캐시에 속하는 페이지는 메모리에서 제거하기에 더 저렴합니다 (필요할 때 디스크에서 간단히 읽을 수 있기 때문에). . 익명 페이지에는 파일 시스템 백업이 없기 때문에 저장할 스왑 공간이 없으면 프로그램에서 필요로하는 한 메모리에 남아 있어야합니다.
이 vm.swappiness
옵션은에 get_scan_count()
정의 된대로 작동 mm/vmscan.c
합니다. get_scan_count()
제거 할 페이지를 찾을 때 익명 및 파일 LRU 목록을 얼마나 적극적으로 스캔해야하는지 결정합니다. 각 사례의 값은 시스템의 변화하는 작업 부하를 고려하기 위해 최근 참조가 이전 참조보다 가중치가 높은 최근 회전 및 최근 스캔 비율의 부동 평균에 의해 결정됩니다.
은 vm.swappiness
익명 페이지에 찬성 파일 캐시 페이지를 스와핑 사이의 균형을 변경하는 수정입니다. vm.swappiness
익명 페이지에 지정된 우선 순위 값 이며 기본적으로 60으로 설정됩니다 . 파일 캐시에는 우선 순위 값 200이 주어지며 여기서 vm.swappiness
수정자가 공제됩니다 ( file_prio=200-anon_prio
). 즉, 기본적으로 우선 순위 가중치는 익명 페이지 ( anon_prio=60
, file_prio=200-60=140
) 를 선호 합니다. 그러나 시스템이 메모리 부족 조건에 가까운 경우 vm.swappiness
0으로 설정 하지 않으면 익명 및 파일 LRU 목록이 모두 동일하게 스캔 됩니다.
하면 vm.swappiness
(100)에 설정되어, 우선 순위는 (동일한 것 anon_prio=100
, file_prio=200-100=100
). vm.swappiness
0으로 설정 하면 커널이 파일 캐시의 페이지를 위해 익명 페이지를 제거하지 못합니다.