wired 는 시스템이 필요로 하는 메모리로 스왑이나 캐시되지 않고 항상 메모리에 상주하고 있어야 한다.
shared 는 1개 이상의 프로세스가 공유하는 메모리로 공유 메모리를 통해 불필요한 메모리 중복을 막고 프로세스간 통신을 위해 사용된다.
buffer 는 data structure, meta info 등을 저장하는 공간으로 파일의 위치, 퍼미션, 날짜등의 inode 데이터가 된다.
cache 는 페이지, 파일, 패킷등의 실제 데이터 덩어리로 볼 수 있다. cache 의 목적은 최근 자주 사용되는 데이터를 메모리에 보관하여 재사용시 디스크까지 가서 않고 메모리에서 빠르게 액세스/로딩을 위해 사용된다.
리눅스에서는 현재 사용중이지 않는 데이터를 buffer 나 cache 로 저장하고 있다.
buffer 나 cache 는 os 가 사용하다가 어떤 프로세스가 실행되어 가용메모리(free)보다 많은 메모리를 필요로 할때 가용메모리로 바뀌게 된다.
따라서 실제 가용메모리 = free + buffers + cached 가 된다.
[예시]
아래는 free 명령을 실행한 결과이다.
전체 4037208KB 메모리중 3438984KB 가 사용되고, 가용메모리(free)는 598044KB 밖에 안되는 것처럼 보이지만
바로 아래줄에 -/+ buffers/cache 를 고려할 경우 사용중인 메모리는 1484256KB 이고 가용메모리는 2552772KB 이 된다.
즉 가용메모리 2552772KB = 598044KB(free) + 96392KB(buffers) + 1858336KB(cached) 가 된다.
[참고]
buffer 는 data structure, meta info 등을 저장하는 공간으로 파일의 위치, 퍼미션, 날짜등의 inode 데이터가 된다.
cache 는 페이지, 파일, 패킷등의 실제 데이터 덩어리로 볼 수 있다. cache 의 목적은 최근 자주 사용되는 데이터를 메모리에 보관하여 재사용시 디스크까지 가서 않고 메모리에서 빠르게 액세스/로딩을 위해 사용된다.
리눅스에서는 현재 사용중이지 않는 데이터를 buffer 나 cache 로 저장하고 있다.
buffer 나 cache 는 os 가 사용하다가 어떤 프로세스가 실행되어 가용메모리(free)보다 많은 메모리를 필요로 할때 가용메모리로 바뀌게 된다.
따라서 실제 가용메모리 = free + buffers + cached 가 된다.
[예시]
아래는 free 명령을 실행한 결과이다.
전체 4037208KB 메모리중 3438984KB 가 사용되고, 가용메모리(free)는 598044KB 밖에 안되는 것처럼 보이지만
바로 아래줄에 -/+ buffers/cache 를 고려할 경우 사용중인 메모리는 1484256KB 이고 가용메모리는 2552772KB 이 된다.
즉 가용메모리 2552772KB = 598044KB(free) + 96392KB(buffers) + 1858336KB(cached) 가 된다.
[참고]
free -t 로 total 파악할 수 있다.
또는
cat /proc/meminfo
또는
vmstat -w
을 사용하면
active: 실행 중인 프로세스가 사용중인 메모리
inactive: 실행 중이 아닌 프로세스가 점유하고 있는 메모리
를 확인 할 수 있다.
또는
cat /proc/meminfo
또는
vmstat -w
을 사용하면
active: 실행 중인 프로세스가 사용중인 메모리
inactive: 실행 중이 아닌 프로세스가 점유하고 있는 메모리
를 확인 할 수 있다.