본 페이지는 버퍼와 캐시에 대한 개념이 혼동되서, 추가적으로 찾아 본 후
공부한 내용 정리
를 위해 작성되었습니다.
✔ 작성 전 : 사전 지식
mariaDB를 사용중인데, buffer라는 개념이 자주 등장하였다.
막연히 캐시와 비슷한 개념으로 더 빠른 연산
을 위한 개념이라고만 생각했다.
캐시의 경우 hit ratio
라는 개념이 등장하며, 자주 사용하는 데이터는 다시 접근하는 경향이 있어, 해당 데이터들은 메인 메모리대신 캐시 메모리에 저장함으로써 속도를 증가시킨다고만 알고있었다. 즉, 데이터 임시 저장소
로 설명 가능하다.
캐시는 CPU 칩 안에 내장되어있으며, L1, L2, L3 캐시 등 존재한다.
✔ Redis
또한 캐시는 하드웨어가 아닌, Redis(Remote Data Store) 에 저장하여 서버를 활용한 웹, 애플리케이션 등에서도 사용 가능하다.
사용자가 요청할 결과를 미리 redis에 저장 후, 요청이 들어오면 redis에서 조회
하여 바로 즉시 반환시켜 서비스상 속도를 증가시켜 줄 수 있다는 장점이 있다.
본격적으로 캐시에 대해 알아보자.
처리속도 향상을 위해, 자주 사용하는 메모리들을 캐시 메모리에
임시 저장
한다.
CPU는 메모리를 참조할 때 항상 캐시메모리를 먼저 탐색하는데, 빠른 처리를 위해 캐시메모리에 임시적으로 저장된 메모리가 있는지?
를 확인하는 과정이다.
이 때, 캐시메모리에 존재 유무 여부를 모두 count하여, 캐시메모리의 최종 성능을 나타내는 hit-ratio 를 계산한다.
hit
,miss
각각의 수를 count하여 Metric으로 활용할hit-ratio
를 계산
case1
: 찾고자 하는 메모리가 캐시메모리에 존재
시
case 2
: 찾고자 하는 메모리가 캐시메모리에 미존재
시
용어 | 설명 |
---|---|
cache hit | CPU가 참조하려는 메모리가 캐시에 존재하는 경우 |
cache miss | CPU가 참조하려는 메모리가 캐시에 존재 하지 않는 경우 |
cache hit ratio |
✔ 캐시 교체 알고리즘
사용하는 리소스의 양은 제한되어 있고, 캐시는 제한된 리소스 내에서 데이터를 빠르게 저장하고 접근할 수 있어야 한다.
이를 위해 주로 LRU(Least Recently Used) 알고리즘
을 사용한다.
캐시와 동일하게 장치간 처리속도 향상 목적을 갖지만, 동작방식이 캐시와 조금 차이가 있다. 캐시와 비교를 하여 차이를 파악하겠습니다.
용어 | 설명 |
---|---|
캐시 | 자주 사용하는 데이터나 값을 복사해 놓는 임시 저장소 |
버퍼 | 데이터를 한 곳에서 다른 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리 영역 |
사람들은 주로 유튜브 영상을 볼 때, 영상이 끊기면버퍼링
이 걸렸다는 말을 많이 사용한다. 그래서 버퍼링에 대해 찾아보니 다음과 같다고 한다.
버퍼링(Buffering) : 버퍼를 활용하는 방식 또는 버퍼를 채우는 동작
유튜브를 예시로 하여 버퍼에 대한 이해를 쉽게 할 수 있다.
유튜브 영상을 시청 시, 빨간색
과 회색
바가 존재하는 것을 다들 보셨을것입니다. 여기서 회색부분 : 버퍼
라고 말할 수 있습니다.
동영상을 내려받는 속도와 실제 시청하는 속도가 차이가 나기 때문에, 버퍼를 통해 미리 최대한 빠르게 동영상을 내려받습니다.
여기서 인터넷이 느려, 시청속도가 버퍼를 채우는 속도보다 빠른 경우 흔히 말하는 버퍼링이 걸렷다 : (버퍼를 채우고있다)
라는 경우가 발생하게 됩니다.
쉽게 말해, 버퍼(Buffer)는 속도 차이가 있는 장치 사이에서 데이터를 전송할 때 데이터의 손실을 방지
하고 효율적으로 사용하기 위한 임시 저장공간이라고 할 수 있습니다.
더 간단히 말하자면 중간에 끊기지 않도록 미리 데이터를 받아오는 것을 버퍼라고도 표현할 수 있습니다.
용어 | 차이점 | 공통점 |
---|---|---|
캐시 | 처리속도를 최대한 올리기 위한 기술로 주로 빠른 속도의 장치를 보조 | 속도에 차이가 있는 두 장치 사이에서 그 차이를 완화 |
버퍼 | 처리속도가 떨어지는 걸 방지하는 기술 | 속도에 차이가 있는 두 장치 사이에서 그 차이를 완화 |
참고링크