TL; DR 1
서버가 일종의 virtuozzo / openvz / virtualization-du-jour 컨테이너 내에 있습니다. 메모리 사용을 이해하려고 노력하는 것은 풍차에서 기울어지고 있습니다.
TL; DR 2
리눅스는 당신의 RAM을 먹었다! 하지만 괜찮습니다. 모든 사람에게 적용됩니다.
긴 이야기
그것을 분해하자!
이 Mem:
섹션에는 다음이 있습니다.
$n total
: 머신의 실제 RAM 크기
$n used
: 프로세스의 합뿐만 아니라 Linux가 소비하는 메모리 양.
$n free
: Linux에서 사용하지 않는 RAM의 양 이것은 캐시 및 버퍼링 된 메모리가 본질적으로 "무료"라는 점을 고려하지 않습니다.
$n buffers
: 버퍼 공간은 디스크 I / O 블록을 읽거나 쓰기를 보류중인 블록입니다. 버퍼는 단일 디스크 블록의 RAM 표현입니다.
이 Swap:
섹션에는 다음이 있습니다.
$n total
: 자기 설명. 페이지를 교환 할 수있는 디스크 공간.
$n used
: 자기 설명. 사용 된 디스크 스왑 공간
$n free
: 허프 디프.
$n cache
: 위의 버퍼와 밀접한 관련이 있습니다. 실제로 페이지 캐시의 일부이며 실제 디스크에는 공간이 없습니다. 이 대화의 세부 사항에 대해 걱정하지 마십시오.
당신이 달릴 때 흥미로운 부분이 온다 free -m
. 세 줄이 표시되고 모든 숫자가 상단과 상관됩니다. 내 PC를 예로 들어 보겠습니다.
total used free shared buffers cached
Mem: 8070 7747 323 0 253 5713
-/+ buffers/cache: 1780 6290
Swap: 5055 0 5055
Mem 행에는 총 RAM (MB $n total
), 사용 된 양 ( $n used
맨 위), 사용 가능한 양 ( $n free
맨 위), 공유 된 양 (그것을 무시)이 표시되며 이제는 좋은 부분이됩니다! buffers
과 cached
열 free -m
상관 관계, 예측, $n buffers
및 $n cache
. 그러나로 free -m
시작 하는 두 번째 행을 살펴보십시오 -/+ buffers/cache:
. 수학은 사용 된 양이 실제로 (총)-((사용 된 버퍼) 캐시 됨) 것을 보여줍니다. 무료는 (총)-(theNewUsed)입니다.
이 모든 것이 무엇을 의미합니까? 그것은 리눅스가 당신의 RAM을 먹었다 는 것을 의미합니다 ! 짧은 이야기는 리눅스 커널이 디스크 캐싱에 사용 가능한 RAM을 고갈 시킨다는 것입니다. 커스텀 커널을 컴파일하고 싶지 않다면 할 수있는 일은 없습니다. 전문가 팁 : 하지 마십시오.
RAM은 실제로 존재하며 프로세스가 자유롭게 사용할 수 있습니다. 의 -/+ buffers/cache:
행 이 의미하는 바입니다 free -m
. 그러나 하이퍼 바이저 가상화 컨테이너가 아닌 내부에있어 약간 문제가 있습니다. 이 시점에서는 바이트 정확도로 메모리를 비축 할 수 없습니다. 그러나 굉장히 특이한 행동은 보이지 않습니다.
평온을 유지하십시오. 또한 물리적 서버를 확보하십시오 (Kreskin과 같은 메모리 통계가 SysAdmin 인 경우를 제외하고).