본문 바로가기

All154

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.
VFS: read_iter() & write_iter() 원래는 페이지 캐시를 정리하려고 했는데 정리하다보니 read/write 매커니즘을 정리할 수밖에 없었다. 이 글에선 read_iter()가 어떻게 동작한는지 간단하게 알아본다. 관련 글 이 글은 가상 파일시스템에 관해 다루므로 VFS가 처음이라면 아래 글을 읽어보자. [Linux Kernel] 가상 파일시스템이란 (VFS, Virtual Filesystem Switch) Virtual Filesystem이란 리눅스를 사용하면 다양한 형식으로 포맷된 디스크를 사용할 수 있다. 보통 리눅스어세는 ext2, ext3, ext4를 사용하지만 윈도우에서 사용하는 NTFS나 FAT같은 디스크도 사용할 수 hyeyoo.com 자료구조 파일 입출력에서 알아볼 자료구조는 크게 kiocb와 iov_iter이다. 내가 파일.. 2022. 1. 24.
다시 정리하는 NUMA NUMA: Non-Uniform Memory Access NUMA: Non-Uniform Memory Access 메모리 관련 부분을 공부하다보니 NUMA가 많이 나와서 정리해본다. 이 글은 Christoph Lameter의 2013년 문서 "NUMA: An Overview"를 리뷰한 것이다. NUMA는 멀티 프로세서 환경.. hyeyoo.com 이전에 정리했던 NUMA 글은 컴퓨터에서 CPU와 접근하려는 물리 주소에 따라서 접근하는 지연시간이 다를 수 있다는 것과, 그래서 왜 메모리 할당자와 스케줄러가 NUMA 아키텍처를 고려해야 하는지, NUMA 아키텍처에서의 allocation policy와 reclamation 등을 다루었다. 그런데 NUMA에 대해서 생각해보니 아직 왜 NUMA라는 방식이 생겼는.. 2022. 1. 21.
RISS에서 ACM Digital Library의 논문 찾기 논문을 구글로만 검색해서 찾다보니 접근할 수 없는 경우가 종종 있다. 그때마다 ACM Digital Library에선 볼 수 있는데 구독하려면 몇십달러씩 내라해서 포기했다. 알고보니 RISS에서 검색하면 볼 수 있었다 :-) RISS 서비스 이용에 불편을 드려 죄송합니다. 다음과 같은 사유로 인하여 이 페이지가 표시됩니다. 원하시는 웹페이지를 찾을 수 없거나 다른 메뉴로 이동한 경우 서비스 수행 중 일시적인 장애가 발 www.riss.kr 로그인 해외 DB 검색 짜잔 근데 사용 가능한 시간대는 4pm ~ 9am 2022. 1. 20.
Virtual Memory: Memory Compaction 이전 글 Virtual Memory: Zone의 종류 노드(Node)는 용도에 따라서 메모리 영역을 한 개 이상의 영역으로 분리해서 관리한다. 이 때 각 영역을 존(Zone)이라고 한다. 이 글에선 존의 종류에 어떤 것이 있는지 알아본다. 존과 노드, NUMA에 hyeyoo.com Virtual Memory: Grouping pages by mobility 2000년대에는 가상 메모리에서 단편화를 줄이려는 노력이 꾸준히 있었다. 그 중 하나가 이 글에서 분석할, Mel Gorman의 패치 시리즈이다. 이 패치 시리즈는 특성이 서로 다른 페이지를 묶어서 관리 hyeyoo.com Memory Compaction Virtual Memory: Grouping pages by mobility에서 알아봤듯 커널은 .. 2022. 1. 10.
Virtual Memory: Zone의 종류 노드(Node)는 용도에 따라서 메모리 영역을 한 개 이상의 영역으로 분리해서 관리한다. 이 때 각 영역을 존(Zone)이라고 한다. 이 글에선 존의 종류에 어떤 것이 있는지 알아본다. 존과 노드, NUMA에 대한 내용은 존, 노드를 정리한 글과 NUMA를 정리한 글에 정리해두었다. Zone의 종류 리눅스에 어떤 존들이 있는지 살펴보자. 참고로 아래 서술한 존이 항상 모두 존재하는 건 아니다. 노드마다 존이 1개 이상 존재하는 건 맞지만 그렇다고 항상 모든 종류의 존이 존재하지는 않는다. 예를 들어서 어떤 시스템은 모든 메모리 영역이 ZONE_NORMAL일 수도 있다. ZONE_DMA DMA는 DMA 글에 정리해두었다. ZONE_DMA는 x86에서 하위 16MB의 메모리를 DMA용으로 예약된 존이다. I.. 2022. 1. 3.