RAM 사용량에 대한 좋은 개요를 얻는 방법

RAM 사용량에 대한 좋은 개요를 얻는 방법

서버에 Ubuntu 14.10을 설치했습니다. 서버 주요 작업은 여러 NodeJS 애플리케이션과 함께 MongoDB 설치를 실행하는 것입니다. NodeJS 애플리케이션은 지속적으로 실행되며 외부로부터의 요청을 수락합니다.

가끔 큰 요청이 들어오면 일부 NodeJS 애플리케이션이 짧은 시간 동안 많은 RAM을 사용하게 됩니다. 나는 이것을 모니터링하려고 노력했지만 내 결과를 어떻게 받아들여야 할지 잘 모르겠습니다.

지금까지 RAM 사용량에 대한 통찰력을 얻기 위해 두 가지 명령을 사용했습니다. 이것들은

free -m

그리고

sudo htop

첫 번째는 다음을 보여줍니다.

                        total       used       free     shared    buffers     cached                                           
Mem:                     3442       3158       283          6        111       1203                                           
-/+ buffers/cache:                  1842       1599                                                                         
Swap:                    0          0          0    

이것을 보면 약 280MB의 RAM이 무료라고 말할 수 있습니다. 그다지 많지 않은 것 같습니다.

htop은 다음과 같이 알려줍니다.

  1  [|||                                         0.8%]     Tasks: 61, 129 thr; 2 running
  2  [|||                                         1.0%]     Load average: 1.16 1.15 0.93
  Mem[|||||||||||||||||||||||||||||||||||||1979/3442MB]     Uptime: 29 days, 00:23:31
  Swp[                                           0/0MB]   

지금은 이걸 어떻게 읽어야 할지 모르겠습니다. 여기서 나를 도와줄 사람이 있나요?

내 질문은 결국 다음과 같이 요약됩니다.

  • 사용 가능한 RAM 용량을 어떻게 알 수 있나요?
  • RAM 메모리가 너무 적은 경우는 언제입니까? 300MB는 아주 작은 용량으로 간주되나요? 위험할 정도로요?

답변1

TL;DR-/+ buffers/cache: 행에 충분한 여유 메모리가 표시되어 있으면 걱정할 필요가 없습니다 . 사용 가능한 메모리가 부족하고 지속적으로 swap디스크에 연결되는 경우에는 걱정해야 합니다.

설명:

현재 RAM 사용 시나리오에 능숙합니다. free -m이를 분해하기 위해 의 출력을 가져옵니다 .

의 모든 열은 free -m설명이 필요하지 않습니다. 중요한 점은 캐시되고 버퍼링된 메모리의 양을 확인하지 않고 메모리 사용량이 높을 때 경고할 필요가 없다는 점입니다.

출력에서 3442MB RAM 중 3158MB를 사용했으며, 간단히 빼면 새 프로그램에 할당할 수 있는 여유 공간은 283MB밖에 되지 않습니다. 이는 옳지 않습니다. cachedbuffers열도 살펴봐야 하며 cached일반적으로 사용되는 파일에 더 빠르게 액세스하기 위해 RAM에 캐시된 디스크 데이터의 양을 표시하고 buffered디스크에 기록할 데이터의 양을 표시합니다.

아시다시피 디스크 액세스는 RAM보다 훨씬 느리므로 성능을 향상하려면 일부 디스크 데이터를 RAM에 저장하는 것이 좋습니다. 1203MB의 캐시된 데이터와 111MB의 버퍼링된 데이터가 있습니다. 이 양의 RAM을 유휴 상태로 유지하지 않고도 메모리가 이 양을 캐싱한다는 것은 좋은 일입니다. 그것은 당신의 성능을 크게 향상시킬 것입니다.

캐싱/버퍼링 없이 사용되고 있는 실제 RAM 양을 확인하려면 행을 살펴보세요 -/+ buffers/cache:. 이 결과는 캐시/버퍼링된 양을 뺀 값으로 표시됩니다. 보시다시피 1599MB의 여유 공간이 있으므로 이 상태에서는 모든 것이 괜찮아 보입니다. 이 행의 값이 낮다면 걱정하고 RAM 사용량을 살펴봐야 합니다.

또한 새 프로그램이 시작될 때 캐싱 후 메모리가 충분하지 않으면 새 프로그램을 위한 공간을 확보하기 위해 이전 캐시가 자동으로 지워집니다. 따라서 실제 메모리 사용량이 높지 않고 지속적으로 디스크로 교체되는 한 캐시는 메모리를 효율적으로 "사용"하므로 상당한 양의 캐시를 확보하는 것이 좋습니다.

답변2

heemayl은 이미 실제 사용 가능한 메모리에 대한 정보의 상당 부분을 다루었습니다. 여기 내 게시물은 .bashrc실제 사용법에 대한 빠른 개요로 사용하기 위해 별칭으로 추가할 수 있는 몇 가지 oneliner입니다 .

free -h | awk '/free/ {getline; x=$2; getline; print "Used "$3 " Out of " x }'

샘플 출력은 다음과 같습니다.

$ free -h | awk '/free/ {getline; x=$2; getline; print "Used "$3 " Out of " x  }'                                                                 
Used 1.2G Out of 5.6G

메모리에 대한 보다 심층적인 조사에 관심이 있다면 cat /proc/meminfo많은 정보를 나열하는 를 사용하세요.이 블로그free명령이 해당 파일의 내용을 계산하는 방법을 이해하는 데 도움이 됩니다 .

관련 정보