대부분의 메모리가 "캐시"되어 있어도 스왑 공간이 여전히 사용됩니까? [복사]

대부분의 메모리가 "캐시"되어 있어도 스왑 공간이 여전히 사용됩니까? [복사]

나는 이 free -m출력을 이해하려고 노력하고 있습니다.

             total       used       free     shared    buffers     cached
Mem:          7971       7608        363          1         17       4703
-/+ buffers/cache:       2887       5084
Swap:          975        967          8

그렇다면 프로세스가 실제로 8GB RAM 중 3GB를 사용하고 있음에도 불구하고 스왑이 사용됩니까? 왜 이런 일이 발생합니까? OS는 스왑을 사용하는 대신 fs 캐시에 더 적은 메모리를 사용하면 안 되나요?

운영 체제는 Ubuntu 14.04.3 LTS기본 설정을 사용합니다.

답변1

OS는 스왑을 사용하는 대신 fs 캐시에 더 적은 메모리를 사용하면 안 되나요?

과거에 OS에 메모리가 부족하여 일부 메모리를 교체한 것 같습니다.

이제 부족 현상이 끝났으므로 스왑의 나머지 페이지는 사용되지 않으므로 OS는 이러한 사용되지 않은 페이지보다는 fs 캐시를 포함한 "핫" 데이터용으로 RAM을 예약하는 것이 더 나을 것입니다.

답변2

Linux는 페이지를 디스크로 교환하는 데 매우 공격적입니다.

이는 더 이상 RAM에 페이지 복사본이 없다는 의미는 아니지만, 여전히 스왑 캐시(디스크에 기록된 페이지를 캐시하는 RAM 부분)에 복사할 수 있다는 의미입니다. 이것의 장점은 일부 프로세스에 메모리가 필요할 때 RAM의 페이지를 즉시 해제할 수 있다는 것입니다. 다음을 통해 금액을 확인할 수 있습니다.

grep SwapCached /proc/meminfo

또한 프로세스의 페이지가 교체된 경우 프로세스에 해당 페이지가 필요하다는 의미는 아니지만 해당 기능/데이터 세그먼트를 전혀 사용하지 않는 일부 링크 라이브러리에서 나온 것일 수 있습니다.

구경하다https://serverfault.com/questions/550793/how-to-find-what-is-using-linux-swap-or-what-is-in-the-swap주제에 대한 소개를 위해 대체된 내용을 확인할 수 있는 스크립트 링크도 있습니다.

경험상 가상 메모리 관리는 때때로 혼란스러울 수 있습니다.

일반적으로 스왑의 크기는 중요하지 않지만 정상적인 활동 중에 스왑 인/아웃되는 양은 얼마나 됩니까(vmstat 확인).

관련 정보