본문 바로가기
INFRA/LINUX

리눅스 메모리에 대하여

by 근현대사 2023. 6. 20.
반응형

리눅스 시스템에서 메모리 사용량을 확인하고 분석하는 방법은 여러 가지가 있습니다.

  1. free 명령어: 가장 간단한 방법 중 하나로 free -m 명령어를 사용하면 시스템의 총 메모리, 사용 중인 메모리, 사용 가능한 메모리 등을 MB 단위로 보여줍니다. free -g 를 통해서 GB 단위로도 볼수있습니다 . 
  2. /proc/meminfo 파일: 이 파일은 시스템의 메모리 사용량에 대한 많은 정보를 제공합니다. 총 메모리, 사용 가능한 메모리, 버퍼에 사용된 메모리 등 다양한 정보를 얻을 수 있습니다. 이 파일의 내용을 읽으려면 cat /proc/meminfo 명령어를 사용하면 됩니다.
  3. top 명령어: top 명령어를 사용하면 현재 시스템에서 가장 많은 리소스를 사용하는 프로세스를 보여줍니다. 또한 전체적인 시스템의 상태, 예를 들어 CPU 사용량, 메모리 사용량, 실행 중인 프로세스 수 등을 실시간으로 모니터링 할 수 있습니다.
  4. vmstat 명령어: vmstat는 시스템의 전반적인 상태를 보여줍니다. 이 명령어는 메모리, 프로세스, 페이징, CPU 활동 등에 대한 정보를 제공합니다.

이러한 명령어와 파일을 사용하여 리눅스 시스템의 메모리 사용량을 확인하고 분석할 있습니다. 도구는 다양한 정보를 제공하므로, 특정 문제를 해결하거나 시스템의 성능을 모니터링하는데 필요한 정보에 따라 적절한 도구를 선택하면 됩니다. 

 

 

free -m

명령어를 사용하면 메모리 사용량에 대한 정보를 megabytes 단위로 보여줍니다. 출력 결과의 각 열의 의미는 다음과 같습니다:

  • total: 시스템에 설치된 총 메모리의 양입니다.
  • used: 현재 사용중인 메모리의 양입니다. 이는 전체 메모리(total)에서 사용 가능한 메모리(available)를 뺀 값으로 계산됩니다.
  • free: 시스템에서 현재 할당되지 않은 메모리의 양입니다. 이 값은 대개 캐시와 버퍼를 사용하지 않는, 실제로 아무런 용도로 사용되지 않는 메모리를 나타냅니다.
  • shared: 공유 메모리란 두 개 이상의 프로세스가 접근할 수 있는 메모리를 의미합니다. 이는 효율적인 자원 활용을 가능하게 하며, 프로세스 간 통신에도 사용됩니다. 공유 메모리 영역에 쓴 데이터는 다른 프로세스가 읽을 수 있으므로, 프로세스 간 데이터를 전달하는 데 사용됩니다. 예를 들어, 하나의 프로세스가 생성한 데이터를 다른 프로세스가 필요로 하는 경우, 이들 프로세스는 공유 메모리를 사용하여 데이터를 교환할 수 있습니다.
  • buff/cache: 이 값은 시스템에서 사용되는 버퍼와 캐시의 총량을 나타냅니다. 리눅스 시스템은 디스크 입출력을 최적화하고 시스템 성능을 향상시키기 위해, 자유 메모리를 버퍼와 캐시로 사용합니다.이렇게 사용된 메모리는 필요에 따라 즉시 재활용 될 수 있으므로, 실질적으로는 사용 가능한 메모리로 간주됩니다.

◼︎버퍼(Buffer): 버퍼는 데이터가 메모리와 하드웨어 사이에서 전송될 때 임시적으로 그 데이터를 보관하는 영역입니다. 버퍼는 블록 장치로의 입출력을 위해 사용되며, 주로 하드웨어 장치와의 데이터 전송을 돕습니다. 버퍼를 통해 데이터는 메모리에서 블록 형태로 읽거나 쓰여질 수 있으며, 이를 통해 시스템의 입출력 효율성이 향상됩니다.

◼︎캐시(Cache): 캐시는 시스템이 파일 시스템의 데이터를 빠르게 읽을 수 있도록 돕는 임시 저장 공간입니다. 파일 시스템에서 데이터를 처음 읽을 때, 그 데이터는 캐시에 저장되어 빠른 재접근을 가능하게 합니다. 이를 통해 시스템은 디스크의 물리적인 입출력 작업을 최소화하고, 데이터 접근 속도를 향상시킬 수 있습니다.

◼︎ 버퍼/캐시  초기화 방법: sync; echo 3 > /proc/sys/vm/drop_caches: 모든 캐시를 삭제하는 명령어입니다. 이 명령은 주의해서 사용해야 합니다. 'sync' 명령은 파일 시스템의 모든 변경사항을 디스크에 쓰고, 'echo 3 > /proc/sys/vm/drop_caches' 명령은 모든 캐시를 삭제합니다. 이는 디버깅이나 테스트 용도로 사용될 수 있지만, 시스템의 성능에 영향을 줄 수 있으므로 실제 운영 환경에서는 주의하여 사용해야 합니다.

 

  • available: available 열은 신규 프로세스가 사용할 있는 예상 메모리량을 나타냅니다. 값은 free 값과 reclaimable buff/cache 값을 합한 것입니다. 따라서, 버퍼/캐시가 많이 사용되더라도 그것들이 재활용될 있기 때문에, 사용 가능한 메모리는 'used' 메모리보다 훨씬 있습니다. 실제로, 시스템에서 메모리 부족이 발생하면 버퍼/캐시 메모리를 자유 메모리로 변환하여 새로운 프로세스에 할당할 있습니다.
반응형

'INFRA > LINUX' 카테고리의 다른 글

리눅스 명령어2  (0) 2023.06.22
inode에 대하여  (0) 2023.06.21
core dump란  (0) 2023.06.19
GPG key(PGP)  (2) 2023.06.16
udev란  (0) 2023.06.13