커널은 스왑하기 위해 커밋할 페이지를 어떻게 결정합니까?

커널은 스왑하기 위해 커밋할 페이지를 어떻게 결정합니까?

RAM 사용량이 "swapiness"에 작성된 수준보다 높으면 커널은 SWAP를 사용합니다. 좋아요 하지만 커널은 어떻게 프로그램을 "주문"합니까? RAM은 "선착순" 방식인가요? 아니면 SWAP의 가장 큰 프로그램인가요? RAM에서 가장 일반적으로 사용되는 프로그램은 무엇입니까?

RAM이 가득 찼거나 거의 찼을 때 커널이 RAM이나 SWAP을 어떻게 결정하는지 알고 싶습니다.

답변1

커널 메모리 관리는 메모리를 구성하기 위해 "프로그램"이라는 개념을 사용하지 않고 페이지를 사용합니다. 커널은 "가장 최근에 사용된 것"을 기준으로 결정합니다(이것은 변경되었을 수 있지만내가 찾을 수 있는 최신 참고 자료에는 다음과 같은 내용이 나와 있습니다.), 커널이 메모리 부족에 직면할 때(스왑을 통해 거의 액세스하지 않는 페이지를 교체하여 더 자주 액세스하는 페이지나 새 페이지(또는 디스크 캐시가 아닌 이유)를 위한 공간을 확보합니다.

따라서 귀하의 가정 중 어느 것도 정확하지 않습니다. 프로그램을 스왑하도록 명령하는 대신 커널은 스왑에 할당할 메모리 부분을 통계적으로 선택합니다. 방식은 LRU이다. 프로그램이 커밋한 익명 또는 개인 메모리의 크기는 커널이 커밋할 페이지를 선택하는 방법에 영향을 주지 않습니다.

를 사용하여 커널이 스왑에 할당한 킬로바이트(또는 페이지) 수를 확인할 수 있습니다 smem -s swap -t -k -n.

관련 정보