사용 후 스왑 공간은 언제 지워지나요?

사용 후 스왑 공간은 언제 지워지나요?

방금 메모리(및 CPU) 집약적 작업의 인스턴스 4개를 실행했는데 16GB의 메모리를 거의 모두 사용했고 스왑 공간(2GB)도 많이 차지했습니다. 이제 프로그램이 완료되었으므로 (conky를 통해) RAM이 해제되고 프로세서가 거의 유휴 상태로 돌아갔지만 스왑 파티션은 여전히 ​​거의 꽉 찼습니다.

커널이 스왑 영역을 언제 지웁니까?라는 질문이 떠오릅니다. 이에 따라 스왑 공간을 확보해야 하는 또 다른 집중 프로세스 배치를 실행하게 됩니다. 스왑에서 관련 없는 정보가 플러시됩니까, 아니면 그냥 충돌이 발생합니까?

답변1

이 답변에서는 "빠른 메모리"와 "느린 메모리"라는 용어를 사용하겠습니다. 실제로 무슨 일이 일어나고 있는지에 대한 묘사가 매우 부족하지만 무슨 일이 일어나고 있는지 설명하는 데 도움이 된다고 생각합니다.

귀하의 컴퓨터에는 빠른 메모리와 느린 메모리로 구성된 "가상 메모리"가 있습니다. 총 메모리 공간은 빠른 메모리 + 느린 메모리의 합계입니다. 이제 컴퓨터는 빠른 메모리에서만 직접 작업할 수 있으므로 운영 체제가 이를 먼저 사용합니다. 빠른 메모리가 가득 차면 운영 체제는 메모리의 일부를 느린 메모리로 이동하려고 시도합니다. 이렇게 하면 사용할 수 있는 빠른 메모리가 확보됩니다. 이제 프로그램이 느린 메모리의 일부 데이터를 사용해야 하는 경우 운영 체제는 해당 데이터를 느린 메모리에서 빠른 메모리로 다시 이동합니다(공간을 확보하기 위해 먼저 일부 데이터를 빠른 메모리에서 느린 메모리로 이동해야 할 수도 있음).

이 프로세스를 "페이징"이라고 합니다. 시스템이 이동만 하면 될 만큼 똑똑하기 때문입니다.페이지전체 프로그램이 아닌 메모리. 프로그램은 빠른 메모리와 느린 메모리 모두에 존재할 수 있습니다. 귀하의 관점에서 유일한 차이점은 메모리 속도가 느리다는 것입니다.느린.

이제 빠른 메모리를 모두 사용한 프로그램이 끝나면 사용 가능한 빠른 메모리가 많이 남게 되고 내용은 여전히 ​​느린 메모리에 남아 있게 됩니다. 하지만 이것이 문제일까요? 사용 가능한 가상 메모리 양이 동일하면 시스템은 해당 페이지를 빠른 메모리로 다시 이동합니다.만약에그것들은 필요합니다. 아무도 이 페이지를 원하지 않는다면 느린 메모리에 남겨두는 것이 나을 것입니다.

분명히 이 이야기에서 "빠른 메모리"는 RAM이고 "느린 메모리"는 스왑입니다.

글쎄요, 그건 단순한 "어리석은" 이야기입니다.

그러나 그것은 일어난 일과 거의 비슷합니다.

Linux는 프로그램을 교환하지 않습니다. 교환은 전체 프로그램과 데이터 세그먼트가 한 번에 교환 장치로 전송된다는 것을 의미합니다. 하지만 리눅스페이지;메모리 페이지를 스왑 장치로 보냅니다. 이는 프로그램의 일부 페이지가 RAM에 있고 일부 페이지가 스왑에 있을 수 있음을 의미합니다. 스왑의 페이지에 액세스하면 필요에 따라 "스왑 인"됩니다. RAM의 페이지는 RAM에 여유 공간을 만들기 위해 스왑하기 위해 "스왑 아웃"됩니다.

따라서 16Gb RAM과 2Gb 스왑 공간을 사용하는 프로그램을 실행한 다음 프로그램이 완료되면 스왑 공간에 페이지가 남게 될 수 있습니다. 하지만오직프로그램에 여전히 할당된 페이지가 거기에 있을 것입니다. free1G 스왑 공간이 사용 중이라고 표시 되면그 정도의 가상 메모리가 아직도 어딘가에서 사용되고 있습니다. 그러나 교환 페이지는 최근에 방문되지 않았으므로 해당 페이지에 그대로 있을 수 있습니다.

이제 워크로드에 따라 이러한 페이지를 스왑 장치에 유지하면 더 나은 성능을 얻을 수 있습니다.또는사전에 RAM으로 다시 가져오면 더 나은 성능을 얻을 수 있습니다. 그러나 두 경우 모두 정확히 동일한 양의 가상 메모리를 사용할 수 있습니다.

(Linux의 과도한 사용 등으로 인해 상황이 더욱 복잡해졌지만 이것이 기본 아이디어입니다.)

가상 메모리 관리와 관련하여 조정 매개변수가 많이 있습니다(https://www.kernel.org/doc/Documentation/sysctl/vm.txt) 그러나 실제로 조정할 필요가 없는 한 기본값으로 두는 것이 좋습니다. https://en.wikipedia.org/wiki/Swappiness아마도 볼만한 가치가 있는 유일한 작품일 것입니다.

관련 정보