하드웨어적 캐시
속도가 다른 두 장치 사이에서 속도 차이를 메워주는 장치
랜덤 액세스
버퍼
주기억 장치와 주변장치 사이에서 데이터를 주고 받을 때 정보를 임시로 기억해두고 사용할 수 있는 공간
버퍼가 사용되면 CPU는 입출력 자료를 기다릴 필요 없이 입력이나 출력 명령을 내릴 수 있다.
빠른쪽에서 느린쪽으로 데이터를 보낼 때 손실이 일어나는 것을 막기 위해서도 쓰인다.
순차적 액세스
버퍼캐시
보조기억장치로서, 디스클의 입출력 효율을 높히기 위해 주기억 장치의 한 영역을 최근에 사용된 디스크 블록의 내용을 기억하는 영역으로 할당한 것을 말한다. 버퍼캐시에 있는 디스크 블록은 디스크에 액세스하지 않고 바로 이용할 수 있다. 이는 주기억장치와 CPU 캐시의 관계와 비슷하다.
Top 명령을 통해 살펴본 메모리 (리눅스 관점 메모리 용어 접근)
$ free -m
total used free shared buffers
Mem: 886 860 25 0 9
-/+ buffers/cache: 850 35
Swap: 443 63 379
total 대비 free memory는 얼마 되지 않고 cached와 buffers의 크기가 큰 것을 알 수 있다.
이유는 리눅스 커널에서는 프로세스가 반납한 메모리를 곧장 free로 돌리지 않기 때문이다.
cached memory는 임시 저장된 file 내용 자체만을 포함한다.. 실행 중인 프로그램이 메모리가 필요하다면 곧바로 대체될 수 있는 free memory인 셈이다.
Buffers는 특정 block device와 관계가 있고 파일시스템 metadata를 캐싱하거나 따로노는 페이지를 추적하는 역할을 한다. 디렉토리엔 뭐가 들어있고, 권한은 어떻게 되며 등등을 기억하고 block device에서 어느 메모리가 읽히거나 쓰여지는지를 추적하는 것이다.
swap이 적게 사용되고 있다면 메모리는 일반적으로 성능에 큰 영향이 없는 상태라고 볼 수 있다.
스왑 (swap)
RAM이 부족할 때 HDD, emmc 등을 swap memory로 만들어 RAM처럼 사용한다.
설정하는 방법은 아래와 같이 swappiness를 조절하면 된다. 0~100인데 100이면 swap을 최대로 활용하겠다는 의미.
참고
용어 설명과 이론에 대해 간략하지만 도움이 됨 : https://forums.gentoo.org/viewtopic.php?t=175419