캐시 스왑이 왜 의미가 있나요?

캐시 스왑이 왜 의미가 있나요?

교체된 페이지를 캐시하는 것은 나에게 매우 비생산적인 것처럼 들립니다. 페이지를 교체하는 경우 먼저 메모리에 캐시한 후 올바른 위치로 이동하면 어떤 이점이 있습니까? 페이지가 사전에 교체되더라도 "그냥" 교체하는 것이 더 합리적이지 않습니까? 실제로 캐싱 스왑은 자원 낭비가 아닌가?

답변1

좀 더 조사한 결과 SwapCached라는 용어가 오해의 소지가 있음을 발견했습니다 /proc/meminfo. 실제로 이는 메모리와 스왑에서 동시에 발생하는 바이트 수와 관련이 있으므로 이러한 페이지가 더티가 아닌 경우 스왑 아웃할 필요가 없습니다.

답변2

이 말은 들어본 적도 없고 나에게도 별로 의미가 없습니다. 나는 여전히 그것이 전혀 교환되지 않도록 하는 오래된 규칙이 가장 좋다고 생각합니다(물론 예약은 제외). 이제 이론적으로는 디스크처럼 느린 것에서 로드하는 데 시간이 걸리는 직접 사용 가능한 메모리에 항목을 캐싱하는 것이 분명한 이점이 있습니다. 그러나 교체할 페이지를 캐시할 수 있다면 처음부터 다시 교체할 이유가 무엇입니까?

답변3

스왑과 RAM 사이에 페이지를 복제하는 요점은 다음 중 하나의 경우 디스크를 기다리지 않도록 하는 것입니다.

  1. 그들에게서 뭔가를 읽어야합니다

  2. 다른 일을 위한 공간을 확보하려면 퇴거해야 합니다.

스왑에만 있는 경우 사례 1은 디스크에서 들어올 때까지 기다리는 것을 의미합니다. RAM에만 있는 경우 사례 2는 해당 항목이 디스크로 나갈 때까지 기다리는 것을 의미합니다.

(물론 사례 2는 실제로는 조금 더 복잡합니다. 그러한 페이지를 제거하는 것이 확실히 더 저렴하기 때문에 커널은 아마도 해당 페이지를 우선적으로 제거할 것입니다. 그러나 요점은 분명해야 합니다.

관련 정보