내가 실행하면 free -h
다음을 얻습니다.
total used free shared buffers cached
Mem: 251G 208G 43G 179G 144M 190G
-/+ buffers/cache: 17G 233G
Swap: 5.6G 5.6G 1.1M
공유 메모리(179G) + 캐시 메모리(190G)가 어떻게 총 메모리(251G)를 초과하나요? 메모리는 캐시 메모리와 공유 메모리로 간주될 수 있나요?
답변1
모든 shared
메모리도 중요합니다 cached
.
shared
메모리는 tmpfs
내부적으로 구현됩니다. tmpfs
백업 저장소(스왑 가능 제외) 없이 페이지 캐시 주변의 얇은 래퍼로 구현됩니다 tmpfs
.
man free
이에 대한 설명은 없습니다. 적어도 내 시스템에서는요(procps-ng에서 제공, 2016-06-03에 마지막 업데이트됨). 죄송합니다. 모든 것은 이것이 에서 가져온 man free
것임을 알려줍니다 . (2017년 9월 15 일 에 업데이트된 매뉴얼 페이지에서) 파일의 필드에 대한 문서가 포함되어 있지만 여전히 .cache
Cached
/proc/meminfo
man proc
meminfo
Cached
Shmem
이것을 실험적으로 볼 수 있습니다. 메모리가 있으면 free
(없으면 available
) tmpfs에서 다음과 같은 파일을 만들 수 있습니다.
dd bs=1M count=100 < /dev/zero > /dev/shm/test.tmp
결과적으로 shared
및 cached
숫자가 모두 free -m
100씩 증가합니다.
메모리 만 있고 제대로 테스트하기에는 available
부족할 경우 에는 페이지 캐시를 최대한 많이 삭제를 실행하여 메모리를 생성 할 수 있습니다 . 물론 페이지 캐시를 제거하는 것은 성능에 매우 해로울 수 있습니다. 실제 서버에서는 이 작업을 수행하지 마세요 :-).free
free
echo 1 | sudo tee /proc/sys/vm/drop_caches