Linux Kernel

cgroup v2 사용법

cgroup v2는 리눅스 커널에서 프로세스를 그룹화 하고, 각 그룹에 대해 리소스 할당/제한을 설정하는 기능을 제공한다. cgroup v1보다 간편하고 세밀한 제어를 지원한다. 계층적 구조를 지원하여 복잡한 리소스 관리를 더욱 효율적으로 수행할…

Continue Readingcgroup v2 사용법

EEVDF 스케줄러

Linux 6.6부터 기존의 CFS(Completely Fair Scheduler)를 대체하는 EEVDF(Earliest Eligible Virtual Deadline First) 스케줄러가 메인라인에 병합되었다. EEVDF는 1996년 Stoica & Zhang이 제안한 알고리즘을 기반으로 하며, CFS의 구조적 한계였던 레이턴시 불공정 문제를…

Continue ReadingEEVDF 스케줄러

Linux 메모리 관리 – 페이지 캐시와 스왑 동작 원리

Linux는 디스크 I/O 비용을 줄이기 위해 읽은 파일 데이터를 RAM에 보관한다. 이것이 페이지 캐시(Page Cache)다. 반대로 RAM이 부족해지면 잘 안 쓰는 메모리를 디스크로 밀어내는데, 이것이 스왑(Swap)이다. 두 메커니즘은 서로 긴밀하게…

Continue ReadingLinux 메모리 관리 – 페이지 캐시와 스왑 동작 원리

Yocto 환경에서 커널에 Clang/LLVM 빌드 환경 적용하기

아래는 (1) 커널 레시피만 Clang으로 빌드하는 방법과, (2) 배포판 전체를 Clang toolchain으로 전환하는 방법을 각각 “Yocto에서 실제로 적용 가능한 형태”로 정리한 것이다.핵심 변수/흐름은 Yocto의 toolchain/clang 체계와 meta-clang의 TOOLCHAIN 스위치에 기반한다.…

Continue ReadingYocto 환경에서 커널에 Clang/LLVM 빌드 환경 적용하기

SoC 벤더 커널을 Clang으로 옮길 때 깨지는 패턴 정리

메인라인 커널은 이미 Clang / LLVM 빌드를 공식 지원한다.하지만 SoC 벤더 커널(특히 4.x/5.4 계열)이나 오래된 BSP 트리는 여전히 GCC 전용 코드가 많다. 리눅스 커널 Clang 빌드 호환성은 아래 글에서 대략의…

Continue ReadingSoC 벤더 커널을 Clang으로 옮길 때 깨지는 패턴 정리

Linux 커널 Clang/LLVM 빌드 호환성 타임라인

Linux 커널은 오랫동안 GCC 중심으로 개발되어 왔다.하지만 최근 몇 년 사이 Clang / LLVM 기반 빌드가 빠르게 안정화되었다. 이 글은 커널에서 Clang 빌드가 어떻게 발전해왔는지를 실제 메인라인 흐름 기준으로 정리한…

Continue ReadingLinux 커널 Clang/LLVM 빌드 호환성 타임라인

ARM64 inline asm 포팅 가이드 (커널/Clang 포팅 관점)

ARM64(AArch64)에서 inline asm은 문법이 어렵다기보다, 컴파일러가 더 엄격하고 최적화가 더 공격적이라서 사고가 난다. 특히 벤더 커널을 Clang으로 옮길 때는 constraint 선택, clobber, barrier 세 가지가 대부분의 원인이다. 이 글에서는 ARM64에서…

Continue ReadingARM64 inline asm 포팅 가이드 (커널/Clang 포팅 관점)