RAM 사용량이 "swapiness"에 작성된 수준보다 높으면 커널은 SWAP를 사용합니다. 좋아요 하지만 커널은 어떻게 프로그램을 "주문"합니까? RAM은 "선착순" 방식인가요? 아니면 SWAP의 가장 큰 프로그램인가요? RAM에서 가장 일반적으로 사용되는 프로그램은 무엇입니까?
RAM이 가득 찼거나 거의 찼을 때 커널이 RAM이나 SWAP을 어떻게 결정하는지 알고 싶습니다.
답변1
커널 메모리 관리는 메모리를 구성하기 위해 "프로그램"이라는 개념을 사용하지 않고 페이지를 사용합니다. 커널은 "가장 최근에 사용된 것"을 기준으로 결정합니다(이것은 변경되었을 수 있지만내가 찾을 수 있는 최신 참고 자료에는 다음과 같은 내용이 나와 있습니다.), 커널이 메모리 부족에 직면할 때(스왑을 통해 거의 액세스하지 않는 페이지를 교체하여 더 자주 액세스하는 페이지나 새 페이지(또는 디스크 캐시가 아닌 이유)를 위한 공간을 확보합니다.
따라서 귀하의 가정 중 어느 것도 정확하지 않습니다. 프로그램을 스왑하도록 명령하는 대신 커널은 스왑에 할당할 메모리 부분을 통계적으로 선택합니다. 방식은 LRU이다. 프로그램이 커밋한 익명 또는 개인 메모리의 크기는 커널이 커밋할 페이지를 선택하는 방법에 영향을 주지 않습니다.
를 사용하여 커널이 스왑에 할당한 킬로바이트(또는 페이지) 수를 확인할 수 있습니다 smem -s swap -t -k -n
.