squashfs에 crypto 압축 알고리즘 활용
Embedded SoC 중에는 HW 압축 Unit을 내장한 것들이 있고, 이런 유닛은 대개 리눅스 커널의 crypto subsystem에 압축 알고리즘으로 등록돼 zram 같은 모듈에서 바로 활용할 수 있다. 문제는 squashfs다. AppImage, snap,…
Linux Kernel
Embedded SoC 중에는 HW 압축 Unit을 내장한 것들이 있고, 이런 유닛은 대개 리눅스 커널의 crypto subsystem에 압축 알고리즘으로 등록돼 zram 같은 모듈에서 바로 활용할 수 있다. 문제는 squashfs다. AppImage, snap,…
리눅스 커널의 CPU 스케줄러(CFS 등)는 범용 워크로드에 맞춰 설계됐지만, 게이밍처럼 짧은 지연시간이 중요한 워크로드와 데이터센터의 처리량 위주 워크로드, 배터리 절약이 우선인 모바일 워크로드를 하나의 스케줄링 정책으로 동시에 만족시키기는 어렵다. 과거에는…
dm-vdo를 도입할 때 흔히 하는 실수가 압축률과 중복제거율만 보고 "물리 디스크의 몇 배를 담을 수 있는가"로 용량 산정을 끝내는 것이다. 하지만 VDO는 논리-물리 블록 매핑(block map), 슬랩별 참조 카운터, 복구…
메모리가 부족한 서버나 컨테이너 환경에서는 스왑을 켜는 순간 디스크 I/O 지연이 그대로 애플리케이션 응답 속도로 이어진다. 반대로 스토리지 비용을 아끼려고 압축을 걸고 싶어도, 파일시스템 레벨 압축(Btrfs, ZFS 등)은 해당 파일시스템을…
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)…