quilt 기반 패치 세트를 자동으로 Git 커밋으로 변환하는 방법

quilt로 관리하던 패치 세트를 Git 저장소로 옮길 때, 흔히 patches 디렉터리를 하나씩 quilt push로 적용하고 그때마다 git add -u, git commit을 반복하는 방법을 쓴다. 패치가 몇 개 안 되면 괜찮지만,…

Continue Readingquilt 기반 패치 세트를 자동으로 Git 커밋으로 변환하는 방법

Valgrind로 메모리 누수 탐지하기

C/C++로 짠 프로그램에서 메모리 누수는 당장 크래시를 내지 않아서 더 골치 아프다. 며칠씩 켜두는 서버 프로세스가 서서히 메모리를 더 먹다가 결국 OOM으로 죽어야 그제서야 문제를 알아차리는 경우가 흔하다. 이 블로그에서는…

Continue ReadingValgrind로 메모리 누수 탐지하기

eBPF를 위한 라즈베리파이 커널 빌드 가이드

라즈베리파이 OS에는 이미 최신 커널이 올라가 있고, CONFIG_BPF_SYSCALL과 CONFIG_BPF_JIT도 기본으로 켜져 있어서 단순한 eBPF 프로그램은 커널을 새로 빌드하지 않아도 로드된다. 문제는 그다음부터다. bpftrace나 최신 BCC 도구 상당수는 BTF(BPF Type Format)…

Continue ReadingeBPF를 위한 라즈베리파이 커널 빌드 가이드

Docker 컨테이너와 VM의 차이와 선택 기준

"컨테이너는 가벼운 VM이다"라는 말을 흔히 듣는다. 틀린 말은 아니지만, 이 표현만 믿고 컨테이너에 VM 수준의 격리를 기대하면 곤란해진다. 신뢰할 수 없는 멀티테넌트 워크로드를 컨테이너 하나로 묶어뒀다가 커널 취약점 하나로 전체가…

Continue ReadingDocker 컨테이너와 VM의 차이와 선택 기준

GDB 고급 사용법 — 메모리 조사부터 원격 디버깅까지

아래 GDB 사용법 글에서 breakpoint·step·backtrace·print 같은 기본기는 이미 다뤘다. 하지만 실무에서, 특히 임베디드/크로스컴파일 환경에서 GDB를 쓰다 보면 로컬 바이너리에 breakpoint 거는 것만으로는 부족한 상황이 자주 생긴다. 타깃 보드에는 GUI도 없고…

Continue ReadingGDB 고급 사용법 — 메모리 조사부터 원격 디버깅까지

F2FS 메타데이터 오버헤드를 줄이는 방법

F2FS로 포맷한 SSD/eMMC의 실제 사용 가능 용량은 명목 용량보다 항상 작다. 이 차이를 "메타데이터가 공간을 많이 차지해서"라고 뭉뚱그려 설명하는 경우가 많은데, 실제로는 구조적 메타데이터(SIT·NAT·SSA 등)와 오버프로비저닝(GC를 위해 남겨두는 여유 공간)이라는…

Continue ReadingF2FS 메타데이터 오버헤드를 줄이는 방법

퀄컴, 짐 켈러의 텐스토렌트(Tenstorrent) 인수 추진 — RISC-V AI 칩으로 엔비디아 아성에 도전

퀄컴이 짐 켈러(Jim Keller)가 이끄는 AI 칩 스타트업 텐스토렌트(Tenstorrent)를 최대 100억 달러에 인수하는 방안을 검토 중이라는 보도가 나왔습니다. The Information이 처음 보도하고 로이터가 받아 전한 이 소식은 아직 협상 단계이고…

Continue Reading퀄컴, 짐 켈러의 텐스토렌트(Tenstorrent) 인수 추진 — RISC-V AI 칩으로 엔비디아 아성에 도전

[Ubuntu] 특정 블럭 장치 비활성화 방법

SAN/멀티패스 환경의 중복 경로, 오작동하는 디스크, 백업 스크립트가 건드리면 안 되는 볼륨 등 특정 블록 장치 하나만 시스템에서 제외해야 하는 상황은 생각보다 자주 생긴다. 문제는 "장치를 숨긴다"는 말이 어느 계층을…

Continue Reading[Ubuntu] 특정 블럭 장치 비활성화 방법