- 기본적으로 캐시를 생각하면, 빠르게 읽기 위해서 사용하는 저장공간으로 생각
- 캐시는 쓰기 명령을 수행할 때도 사용 → 아래의 그림처럼 캐시에 Write Buffer라는 걸 두어서 쓰기 성능 향상에 사용
- Write Buffer는 CPU가 쓰기 명령 수행 중에 좀 더 효율적으로 다른 일을 할 수 있도록 해줌
- 쓰기 버퍼 방식은 크게 두 가지가 존재 → Write Through와 Write Back
Write Through
- Write Through라는 용어는 쓰루 패스와 마찬가지로 Memory에 뭔가를 쓰기 명령을 수행할 때, Cache와 Memory 값을 일치 시켜주는 방식
- CPU가 주기억장치(RAM) 또는 디스크(Disk)로 데이터를 기입하고자 할 때 데이터는 먼저 캐시로 기입 → 데이터가 캐시 됨과 동시에 주기억장치(RAM) 또는 디스크(Disk)로 업데이트하는 구조
- 데이터 로스의 리스크가 있으면 안되는 상황에서는 Write Through를 사용하는 것이 바람직
Write Through 장점
- 캐시와 메모리에 업데이트를 같이 하여, 데이터 일관성을 유지할 수 있어서 안정적
- inconsistency(불일치)현상이 발생 X
Write Through 단점
- 속도가 느린 주기억장치 또는 디스크로 동시에 데이터를 기록
- 완료될 때까지 CPU가 대기하는 시간이 필요하기 때문에 성능이 떨어짐
Write Through를 사용하여 데이터를 처리하는 구조
Write Back
- CPU 데이터를 사용할 때 데이터는 먼저 캐시로 기록되는데, 캐시 내에 일시적으로 저장된 후에 블록 단위에 캐시로부터 해제되는 때(캐시안에 있는 내용을 버릴시) 에만 주기억장치 또는 보조기억장치에 기록되는 방식
- 데이터를 쓸 때 메모리에는 쓰지 않고 캐시에만 업데이트를 하다가 필요할 때에만 주기억장치나 보조기억장치에 기록하는 방법
- 데이터 로스의 리스크를 조금 감수하더라도 빠른 서비스를 요하는 상황에서는 Write Back을 사용하는 것이 바람직
Write Back 장점
- Write Through보다 훨씬 빠름
Write Back 단점
- 속도가 빠른 대신에 캐시에 업데이트 하고 메모리에는 바로 업데이트를 하지 않기 때문에 캐시와 메모리가 서로 값이 다른 경우가 발생 가능
- inconsistency(불일치)
- 캐시에만 써놓고 Device에 값을 안넘기는 경우가 발생하여서 문제 발생 가능
- Write Back 문제를 해결하기 위하여 Cache Flush 또는 Cache clean을 사용
Write Back을 사용하여 데이터를 처리하는 구조
※ 참조
- Cache Flush는 Cache Invalidate(캐시 무효화)로 Cache 안의 내용을 마치 Reset하듯이 정리함
- Cache Clean은 Cache에 있던 내용을 Memory에도 update해줌
Write Back과 Write Through의 성능 차이가 큼(데이터 베이스 로드 처리량 비교)
'OS(운영체제) > 리눅스(Linux)' 카테고리의 다른 글
C-State → CPU 사용량이 적은 idle 상태 (0) | 2022.07.21 |
---|---|
Linux 접속 로그 → btmp, wtmp, utmp, lastlog (0) | 2022.07.18 |
프로세스가 사용하는 메모리의 양 확인 정보 → VIRT, RES, SHR (0) | 2022.07.18 |
OOM Scoring(Out Of Memory Scoring)이란 (0) | 2022.07.17 |
Network Ring Buffer Size 설정하기 (0) | 2022.07.15 |