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.