Linux Kernel

Clang 빌드된 커널에 KCFI 적용 시 Slab 메모리 사용량 차이 분석

KCFI(CONFIG_CFI_CLANG)는 간접 호출마다 함수 타입 해시를 대조해 제어 흐름 하이재킹을 막는 Clang 전용 보호 기능이다. 함수마다 타입 ID가 붙고 호출 지점마다 검사 코드가 들어가니 커널이 커지는 것은 분명한데, 그러면 런타임…

Continue ReadingClang 빌드된 커널에 KCFI 적용 시 Slab 메모리 사용량 차이 분석

리눅스 커널 GCC 빌드와 Clang 빌드에 따른 Slab 메모리 차이 분석

커널을 Clang으로 빌드하면 GCC 빌드와 메모리 사용량이 달라질까. 컴파일러가 바뀌면 인라이닝과 코드 생성이 달라지니 커널이 잡는 슬랩(slab) 메모리도 따라 달라질 것 같지만, 실제로 재보면 어느 쪽이 얼마나 다른지 숫자로 답한…

Continue Reading리눅스 커널 GCC 빌드와 Clang 빌드에 따른 Slab 메모리 차이 분석

슬랩 할당 백트레이스 추적: alloc_calls에서 alloc_traces로

슬랩 캐시가 계속 커질 때 /proc/slabinfo는 어느 캐시에 오브젝트가 몇 개 있는지만 알려주고, 그 오브젝트를 누가 할당했는지는 알려주지 않는다. SLUB에는 오브젝트마다 마지막 할당·해제 호출 스택을 기록하는 기능이 있어서 이 질문에…

Continue Reading슬랩 할당 백트레이스 추적: alloc_calls에서 alloc_traces로

리눅스 커널 7.2 릴리스 — 캐시 인지 스케줄링 도입, DRM Fair 스케줄러는 막판 되돌림

리누스 토발즈가 8월 16일(현지 시간) 리눅스 커널 7.2를 릴리스했습니다. 병합 창구에서만 13,412개의 non-merge 커밋이 들어와 2024년 6.7 사이클 이후 가장 바쁜 주기였습니다. 토발즈는 릴리스 공지에서 "마지막 한 주가 또 한…

Continue Reading리눅스 커널 7.2 릴리스 — 캐시 인지 스케줄링 도입, DRM Fair 스케줄러는 막판 되돌림

리눅스 커널의 시스템 콜 처리 경로 — arm64 예외 벡터부터 핸들러까지

x86-64에서는 syscall 명령이 MSR_LSTAR에 적힌 주소로 곧장 점프한다. 시스템 콜 전용 진입점이 레지스터 하나에 박혀 있는 구조다. arm64에는 그런 전용 레지스터가 없다. svc 명령이 만드는 것은 "동기 예외" 하나일 뿐이고,…

Continue Reading리눅스 커널의 시스템 콜 처리 경로 — arm64 예외 벡터부터 핸들러까지

Multi-Gen LRU(MGLRU) 확인하기 — 세대 히스토그램과 선제적 회수

메모리가 부족해지면 커널은 페이지 캐시나 익명 페이지 중 "안 쓸 것 같은" 것을 골라 내보낸다. 이 판단이 틀리면 방금 내보낸 페이지를 곧바로 다시 읽어들이는 스래싱(thrashing)이 생기고, 저사양 기기나 메모리 상한이…

Continue ReadingMulti-Gen LRU(MGLRU) 확인하기 — 세대 히스토그램과 선제적 회수

lockstat 사용법 — /proc/lock_stat으로 커널 락 경합 지점 찾기

멀티코어에서 처리량이 코어 수만큼 늘지 않고 어느 지점부터 오히려 떨어질 때, 원인이 락 경합(lock contention)인 경우가 많다. perf lock은 배포판 커널 그대로도 쓸 수 있어 편하지만 트레이스포인트를 기록하는 방식이라 "측정하는…

Continue Readinglockstat 사용법 — /proc/lock_stat으로 커널 락 경합 지점 찾기

Rust 커널 프로그래밍 가이드 (5) — platform 드라이버로 배우는 모듈의 표준 구조: probe/remove와 디바이스 트리 바인딩

앞선 편들에서 module! 매크로로 init/exit을 가진 모듈을 만들고 misc device까지 붙여봤다. 그런데 실제 하드웨어를 다루는 드라이버는 insmod 시점에 일을 시작하지 않는다. 모듈은 "이런 하드웨어를 담당할 수 있다"고 등록만 해두고, 그…

Continue ReadingRust 커널 프로그래밍 가이드 (5) — platform 드라이버로 배우는 모듈의 표준 구조: probe/remove와 디바이스 트리 바인딩

오픈소스 서밋 코리아 2026 결산 — 그렉 크로아-하트만 “AI 취약점 보고의 25~33%가 오탐”

오픈소스 서밋 코리아 2026이 8월 11일 서울 파르나스 호텔에서 막을 올렸습니다. 지난 예고 글에서 기조연설 라인업과 트랙 구성을 정리했는데, 이번에는 실제로 무대에서 어떤 이야기가 나왔는지를 정리합니다. 키워드는 하나로 모입니다. AI가…

Continue Reading오픈소스 서밋 코리아 2026 결산 — 그렉 크로아-하트만 “AI 취약점 보고의 25~33%가 오탐”

[Linux Kernel] ftrace event tracing — 필터·트리거·히스토그램으로 좁혀 보기

커널이 제공하는 트레이스 이벤트는 Ubuntu 24.04 기준 1789개다. 어떤 이벤트를 봐야 할지 모르겠다고 events/enable에 1을 써버리면 1초 만에 수십만 건이 링 버퍼에서 밀려나 사라지고, 정작 보려던 이벤트도 그 안에 묻힌다.…

Continue Reading[Linux Kernel] ftrace event tracing — 필터·트리거·히스토그램으로 좁혀 보기