free의 출력에서 ​​버퍼 / 캐시 라인의 의미


168

내 서버가 왜 표시됩니까?

            total      used      free   shared buffers    cached
    Mem: 12286456  11715372    571084        0   81912   6545228
-/+ buffers/cache:  5088232   7198224
   Swap: 24571408     54528  24516880

나는 리눅스에서 메모리를 계산하는 것에 대해 모른다. 7198224가 비어있는 곳에서 5088232가 사용된다고 말합니다. 실제로 5GB의 RAM을 소비하고 있습니까?



답변:


232

값의 의미

첫 번째 줄은 다음을 의미합니다.

  • total: 총 (실제) RAM (커널이 시작할 때 커널이 영구적으로 예약하는 작은 비트 제외); 그것이 ca를 보여주는 이유입니다. 11.7 GiB, 아마도 12 GiB가 아닙니다.
  • used: OS에서 사용중인 메모리
  • free: 메모리를 사용하지 않습니다.

total= used+free

  • shared/ buffers/ cached이 특정 목적을위한 메모리 사용량을 나타내고,이 값은 값에 포함된다 used.

두 번째 줄은 첫 번째 줄 값을 조정합니다. 원래 값에서 used buffers+cached과 원래 값에 free 더하기 덧셈 buffers+cached을하므로 제목이됩니다. 이러한 새로운 가치는 종종 첫 줄보다 더 의미가 있습니다.

마지막 줄 ( Swap:)은 스왑 공간 사용량 (즉, 디스크로 일시적으로 이동 한 메모리 내용)에 대한 정보를 제공합니다.

배경

숫자의 의미를 실제로 이해하려면 Linux의 가상 메모리 (VM) 하위 시스템에 대한 약간의 배경 지식이 필요합니다. 짧은 버전 : Linux (대부분의 최신 OS와 마찬가지로)는 캐싱을 위해 항상 무료 RAM을 사용하려고 시도하므로 Mem: free거의 항상 매우 낮습니다. 따라서 -/+ buffers/cache:캐시를 무시할 때 사용 가능한 메모리 양을 표시하므로 행 이 표시됩니다. 메모리가 부족하면 캐시가 자동으로 해제되므로 실제로 중요하지 않습니다.

라인 의 free-/+ buffers/cache:이 낮아지면 Linux 시스템의 메모리가 실제로 부족합니다 .

숫자의 의미에 대한 자세한 내용은 질문을 참조하십시오.

procps 3.3.10의 변화

freeprocps 3.3.10 (2014 년에 릴리스)에서 출력 이 변경되었습니다. 보고 된 열은 이제 "total", "used", "free", "shared", "buff / cache", "available" 이며 일부 값의 의미는 주로 Linux 커널의 슬래브를 더 잘 설명하기 위해 변경되었습니다. 은닉처.

동기 부여에 대해서는 데비안 버그 보고서 # 565518 을 참조하십시오. 14.04에서 16.04 로의 출력 변경은 무엇 free을 의미합니까? 자세한 내용은.


리눅스가 어떤 종류의 캐싱을 확장 할 수 있습니까? 액세스 한 파일입니까 아니면 네트워크 파일입니까?
CMCDragonkai

@CMCDragonkai : serverfault.com/questions/23433/…에 대한 답변 은 "캐시"및 "버퍼"를 구성하는 내용을 자세히 설명합니다.
sleske

5
"total = used + free"라는 문장이 맞지 않다고 생각합니다. 내 컴퓨터에서 다음 출력을 참조하십시오.$ free -h total used free shared buff/cache available Mem: 3.4G 585M 152M 11M 2.6G 2.5G Swap: 4.0G 84M 3.9G
Sebastian

@Sebastian : 아, 흥미 롭습니다. 자유의 출력이 변경된 것 같습니다 (3.3.10). 나는 이것을 언급하기 위해 대답을 편집했다. 이 변경에 관심이 있으시면 새로운 질문을 고려하십시오 :-).
sleske 2013

3
total = used + free + buff/cache
danger89


2

버퍼 / 캐시 라인은 프로그램이 사용하는 메모리 양 (첫 번째 열)을 보여 주며 프로그램이 사용할 수있는 여유 공간 (두 번째 열)을 보여줍니다. 상당히 난해한 숫자이며 실제로 실제로 살펴볼 것이 아닙니다.


그리고 무엇을 첫 번째 줄 (MEM 라인)을 수행하는 것은 의미
Muahmmad Zeeshan

8
시스템에 12GB의 RAM이 설치되어 있으며 그 중 11.5GB가 사용되고 0.5GB 정도는 현재 사용되지 않습니다. 사용 된 메모리의 약 82MB는 버퍼 (네트워크 연결 등)에 사용되는 반면 약 6.5GB는 디스크에 데이터 사본을 저장하는 데 사용되므로 데이터가 다시 필요할 때 다시 읽을 필요가 없습니다.
womble

3
@Muhammad : "82MB는 무료입니다." -아니오, 57MiB는 무료입니다 (그러나 실제로는 중요하지 않습니다. 제 답변을보십시오). "이제 시스템이 한계에 도달했음을 의미합니다."-아닙니다. 이 시스템은 캐싱에 6.9GiB를 사용하므로 응용 프로그램에 쉽게 제공되므로 많은 공간이 있습니다. 또한 스왑 사용량이 매우 낮습니다 (약 50MiB). 메모리가 꽉 차기 시작하면 스왑 사용량이 증가합니다. 현재는 절반의 RAM을 거의 사용하지 않습니다.
sleske

4
어느 시점에서 새로운 질문을 고려한 적이 있습니까?
womble

3
버퍼 / 캐시 라인은 시스템의 실제 사용 가능한 메모리이므로 시스템에 프로그램을위한 공간이 있는지 알고 싶은 경우 가장 적합합니다.
eckes
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.