page cache3 PIPT / VIVT / VIPT 캐시와 flush_dcache_folio() 오랜만에 글을 쓴다. 이번 글에서는 PIPT, VIPT, VIVT 캐시의 특성을 정리하고 페이지 캐시에서 언제 flush_dcache_folio()를 호출해야하는지 정리해본다. 캐시 복습 우선 캐시를 간단하게 복습해보자. (자세하게는 다루지 않는다!) 캐시는 너무 thrashing이 잦은 direct mapped 캐시나 현실적으로 너무 비싼 fully associative 캐시보다는 set associative 캐시가 주로 사용된다. 아주 엉성하게 그림을 그려봤는데... 위 그림은 같은 인덱스를 갖는 캐시 라인들을 set이라고 부르고, 4-way라서 하나의 set에 4개의 캐시 라인이 있다는 걸 표현하고자 했다. direct mapped 캐시와는 달리 N-way set associative 캐시는 인덱스.. 2022. 6. 25. Page Cache: write 글을 좀 오랜만에 쓴다. 이것저것 하느라 글을 그동안 못썼다. 흠, 다음 글은 뭐쓰지? 이전 글 VFS: read_iter() & write_iter() 원래는 페이지 캐시를 정리하려고 했는데 정리하다보니 read/write 매커니즘을 정리할 수밖에 없었다. 이 글에선 read_iter()가 어떻게 동작한는지 간단하게 알아본다. 관련 글 이 글은 가상 파일시스 hyeyoo.com Page Cache: filemap_read 이전 글 이전 글에서는 read() 시스템 호출에서 어떤 일이 일어나는지 알아봤다. read() 시스템 호출은 모드와 권한이 적절한지 확인한 후, 1) Direct IO를 수행하거나 2) filemap_read()로 페이지 캐시에서 hyeyoo.com 앞선 글에서 read()를 할 때.. 2022. 3. 9. Page Cache: filemap_read 이전 글 이전 글에서는 read() 시스템 호출에서 어떤 일이 일어나는지 알아봤다. read() 시스템 호출은 모드와 권한이 적절한지 확인한 후, 1) Direct IO를 수행하거나 2) filemap_read()로 페이지 캐시에서 데이터를 읽어온다는 것을 알아봤다. VFS: read_iter() & write_iter() 원래는 페이지 캐시를 정리하려고 했는데 정리하다보니 read/write 매커니즘을 정리할 수밖에 없었다. 이 글에선 read_iter()가 어떻게 동작한는지 간단하게 알아본다. 관련 글 이 글은 가상 파일시스 hyeyoo.com 페이지 캐시란 디스크의 속도는 어마무시하게 느리다. HDD에서 지연시간이 밀리초 단위로 발생함을 생각했을 때, 중간에 캐시가 없다면 프로세서가 파일의 내용을 .. 2022. 2. 9. 이전 1 다음