리눅스 커널 CMA 활용법
카메라, 비디오 코덱, 디스플레이 같은 DMA 디바이스는 종종 물리적으로 연속된(contiguous) 대용량 버퍼가 필요하다. CPU와 달리 이런 디바이스는 MMU로 흩어진 페이지를 하나의 연속 주소 공간처럼 매핑하는 게 불가능한 경우가 많기 때문이다.…
카메라, 비디오 코덱, 디스플레이 같은 DMA 디바이스는 종종 물리적으로 연속된(contiguous) 대용량 버퍼가 필요하다. CPU와 달리 이런 디바이스는 MMU로 흩어진 페이지를 하나의 연속 주소 공간처럼 매핑하는 게 불가능한 경우가 많기 때문이다.…
라즈베리파이 OS에는 이미 최신 커널이 올라가 있고, CONFIG_BPF_SYSCALL과 CONFIG_BPF_JIT도 기본으로 켜져 있어서 단순한 eBPF 프로그램은 커널을 새로 빌드하지 않아도 로드된다. 문제는 그다음부터다. bpftrace나 최신 BCC 도구 상당수는 BTF(BPF Type Format)…
epoll은 nginx, Node.js, Python asyncio, 각종 데이터베이스는 물론 안드로이드의 이벤트 루프까지 떠받치는 리눅스의 핵심 I/O 멀티플렉싱 기능입니다. 그런데 2026년 5월, 이 epoll 서브시스템에서 일반 사용자 권한만으로 root를 딸 수 있는…
2026년 7월 첫째 주, 우분투 진영에서 한꺼번에 여러 소식이 쏟아졌습니다. 지난 4월 출시된 26.04 LTS "Resolute Raccoon"이 첫 포인트 릴리스를 앞두고 있는 와중에, 7월 1일에는 20.04 LTS부터 26.04 LTS까지 모든…
dm-vdo를 도입할 때 흔히 하는 실수가 압축률과 중복제거율만 보고 "물리 디스크의 몇 배를 담을 수 있는가"로 용량 산정을 끝내는 것이다. 하지만 VDO는 논리-물리 블록 매핑(block map), 슬랩별 참조 카운터, 복구…
메모리가 부족한 서버나 컨테이너 환경에서는 스왑을 켜는 순간 디스크 I/O 지연이 그대로 애플리케이션 응답 속도로 이어진다. 반대로 스토리지 비용을 아끼려고 압축을 걸고 싶어도, 파일시스템 레벨 압축(Btrfs, ZFS 등)은 해당 파일시스템을…
리눅스 커널에는 파일시스템이 많지만, 그중 데이터를 투명하게 압축(transparent compression)해서 저장 공간을 아껴주는 것은 일부에 불과하다. 가장 많이 쓰이는 ext4나 XFS는 압축 기능 자체가 없고, Btrfs와 F2FS는 쓰기 가능한(writable) 파일시스템이면서 압축을…
리눅스 커널은 다양한 비동기 작업을 효율적으로 처리하고 관리하기 위한 메커니즘을 제공하는데 그 중 하나가 워크큐(Workqueue)이다. 워크큐는 바운드(bound) 워크큐와 언바운드(unbound) 워크큐 두 가지 주요 유형으로 구분된다. 각각의 워크큐 유형은 특정 상황과…
리눅스 시스템에서 read() 또는 write()를 호출했을 때, 이 요청은 어떻게 실제 eMMC 디바이스까지 도달할까? 이번 글에서는 사용자의 File I/O 요청이 커널 eMMC 디바이스로 연결되는 전체 흐름을 커널 내부 경로를 따라…
커널 코드에 printk를 넣고 재빌드/재부팅하는 것은 확인할 지점이 늘어날수록 비용이 커진다. tracepoint와 kprobe는 커널을 재빌드하지 않고도 특정 함수의 호출, 인자, 리턴값을 실시간으로 들여다볼 수 있게 해주는 두 가지 트레이싱 메커니즘이다.…