F2FS와 BtrFS, 압축 가능한 파일시스템 관점에서 비교
F2FS와 Btrfs는 둘 다 Linux 커널에 포함된 파일시스템이면서 투명 압축(transparent compression)을 지원한다는 공통점이 있다. 하지만 압축을 구현한 방식과 실제로 얻을 수 있는 효과는 두 파일시스템의 근본적인 설계 철학 차이 —…
Linux Kernel
F2FS와 Btrfs는 둘 다 Linux 커널에 포함된 파일시스템이면서 투명 압축(transparent compression)을 지원한다는 공통점이 있다. 하지만 압축을 구현한 방식과 실제로 얻을 수 있는 효과는 두 파일시스템의 근본적인 설계 철학 차이 —…
커널 함수 호출이나 스케줄링 이벤트가 실제로 어떤 순서로 일어나는지 확인하고 싶을 때, printk를 여기저기 넣고 재빌드하는 건 비효율적이다. ftrace(Function Tracer)는 커널을 재빌드하지 않고도 함수 호출과 이벤트를 추적할 수 있게 해주는…
리눅스 커널에는 파일시스템이 많지만, 그중 데이터를 투명하게 압축(transparent compression)해서 저장 공간을 아껴주는 것은 일부에 불과하다. 가장 많이 쓰이는 ext4나 XFS는 압축 기능 자체가 없고, Btrfs와 F2FS는 쓰기 가능한(writable) 파일시스템이면서 압축을…
리눅스 커널은 다양한 비동기 작업을 효율적으로 처리하고 관리하기 위한 메커니즘을 제공하는데 그 중 하나가 워크큐(Workqueue)이다. 워크큐는 바운드(bound) 워크큐와 언바운드(unbound) 워크큐 두 가지 주요 유형으로 구분된다. 각각의 워크큐 유형은 특정 상황과…
리눅스 시스템에서 read() 또는 write()를 호출했을 때, 이 요청은 어떻게 실제 eMMC 디바이스까지 도달할까? 이번 글에서는 사용자의 File I/O 요청이 커널 eMMC 디바이스로 연결되는 전체 흐름을 커널 내부 경로를 따라…
Btrfs(B-tree file system, "better FS" 또는 "butter FS"로도 읽는다)는 Oracle의 Chris Mason이 2007년 시작해 2009년 Linux 2.6.29부터 메인라인에 포함된 파일시스템이다. ext4의 뒤를 이을 차세대 범용 파일시스템을 목표로, ZFS에 견줄만한 copy-on-write(CoW)…
F2FS(Flash-Friendly File System)는 삼성전자가 NAND flash 기반 저장 장치를 위해 설계해 2012년 공개하고 Linux 3.8부터 메인라인에 포함된 파일시스템이다. eMMC, SD 카드, SSD처럼 FTL(Flash Translation Layer)을 내장한 flash 장치의 물리적 특성을…
Linux 커널을 소스에서 빌드하다 보면 tools/objtool을 컴파일하는 단계에서 gelf.h 헤더를 찾지 못해 빌드가 중단되는 경우가 있다. objtool은 커널 빌드 시 오브젝트 파일의 제어 흐름을 분석해 ORC unwinder 테이블 생성, retpoline/livepatch…
커널 코드에 printk를 넣고 재빌드/재부팅하는 것은 확인할 지점이 늘어날수록 비용이 커진다. tracepoint와 kprobe는 커널을 재빌드하지 않고도 특정 함수의 호출, 인자, 리턴값을 실시간으로 들여다볼 수 있게 해주는 두 가지 트레이싱 메커니즘이다.…
KSM(Kernel Samepage Merging)은 리눅스 커널에서 메모리 중복을 줄이기 위해 사용되는 기술이다. KSM은 동일한 메모리 페이지를 가진 프로세스들을 결합하여 메모리 사용량을 최적화할 수 있다. 이 글에서는 KSM의 동작 원리, 설정 방법,…