교체된 페이지를 캐싱하는 것은 나에게 매우 비생산적인 것 같습니다. 페이지를 교환하는 경우 먼저 메모리에 캐시한 다음 올바른 위치로 이동하면 어떤 이점이 있습니까? 페이지가 적극적으로 교환되더라도 "그냥" 교환하는 것이 더 합리적이지 않을까요? 사실 캐시 스와핑은 자원낭비 아닌가요?
답변1
더 많은 조사를 한 결과 SwapCached라는 용어가 /proc/meminfo
오해의 소지가 있음을 발견했습니다. 실제로 이는 메모리와 스왑에 동시에 있는 바이트 수와 관련이 있으므로 해당 페이지가 더티가 아닌 경우 스왑 아웃할 필요가 없습니다.
답변2
나는 이것에 대해 들어본 적이 없으며 그것은 나에게 별로 의미가 없습니다. 나는 여전히 그것이 전혀 교환되지 않도록 하는 오래된 규칙이 최고라고 생각합니다(물론 예약은 제외). 이론적으로는 디스크와 같은 느린 소스에서 데이터를 로드하는 데 시간이 걸리기 때문에 직접 사용 가능한 메모리에 데이터를 캐싱하는 것에는 분명한 이점이 있습니다. 하지만 교체되는 페이지를 캐시할 수 있다면 왜 다시 캐시해야 할까요?
답변3
스왑과 RAM 간에 페이지를 복사하는 목적은 다음과 같은 경우 디스크를 기다리지 않기 위한 것입니다.
그들에게서 뭔가를 읽어야 해
다른 일을 위한 공간을 확보하려면 퇴거해야 합니다.
스왑에만 있는 경우 케이스 1은 디스크에서 들어올 때까지 기다리는 것을 의미하고, RAM에만 있는 경우 케이스 2는 디스크에 기록될 때까지 기다리는 것을 의미합니다.
(물론 사례 2는 실제로는 좀 더 복잡합니다. 해당 페이지를 제거하는 것이 확실히 더 저렴하므로 커널이 해당 페이지를 먼저 제거할 수도 있지만 요점은 분명해야 합니다.