Page Cache, Slab Allocator, 그리고 커널 메모리 압박의 역학

Page Cache, Slab Allocator, 커널 메모리 압박 이해하기 운영체제는 시스템의 모든 부분을 원활하게 작동시키기 위해 끊임없이 노력합니다. 그 중심에는 메모리 관리가 있으며, Page Cache와 Slab Allocator는 커널 메모리 압박을 완화하는 데 중요한 역할을 합니다. 이들은 파일 시스템 성능을 향상시키고 커널 내부 자료 구조를 효율적으로 관리하는 핵심 요소입니다. 이 글에서는 Page Cache, Slab Allocator, 그리고 커널 […]

VFS와 inode 캐시 구조: 파일 시스템 성능의 숨은 주역

VFS와 inode 캐시 파일 시스템 성능의 숨은 주역 파일 시스템은 운영체제에서 파일을 저장하고 관리하는 핵심적인 부분입니다. 우리가 문서를 저장하고, 프로그램을 실행하고, 심지어 웹 페이지를 보는 모든 과정은 파일 시스템을 통해 이루어집니다. 그런데, 이러한 파일 시스템의 성능을 좌우하는 숨은 주역들이 있습니다. 바로 VFS(Virtual File System)와 inode 캐시입니다. 이들은 어떻게 파일 시스템의 성능을 향상시키고, 우리에게 더 빠르고 […]

eBPF로 커널 내부 트레이싱하기: perf를 넘어서는 관찰력

eBPF로 커널 내부 트레이싱하기 perf를 넘어서는 관찰력 리눅스 커널은 운영체제의 심장과 같습니다. 시스템의 모든 활동을 조율하고, 하드웨어와 소프트웨어 사이의 다리 역할을 합니다. 따라서 커널 내부에서 무슨 일이 벌어지는지 이해하는 것은 시스템 성능을 최적화하고, 버그를 찾고, 보안 문제를 해결하는 데 매우 중요합니다. 전통적으로는 perf와 같은 도구가 커널 트레이싱에 사용되었지만, eBPF(Extended Berkeley Packet Filter)는 훨씬 더 강력하고 […]

시스템 콜 인터셉션과 보안 후킹의 실제 적용 사례

시스템 콜 인터셉션과 보안 후킹, 안전한 디지털 세상을 위한 숨겨진 영웅 시스템 콜 인터셉션과 보안 후킹은 일반 사용자에게는 다소 생소하게 들릴 수 있지만, 컴퓨터 보안 분야에서 매우 중요한 역할을 수행하고 있습니다. 마치 우리 몸속의 면역 체계처럼, 시스템의 핵심적인 부분에서 악성 코드를 탐지하고 차단하여 시스템을 보호하는 역할을 합니다. 이 글에서는 시스템 콜 인터셉션과 보안 후킹이 무엇인지, […]

Linux OOM-Killer의 의사결정 알고리즘 완전 해부

Linux OOM-Killer, 왜 알아야 할까요? Linux 시스템을 사용하다 보면 메모리가 부족해지는 상황을 마주하게 됩니다. 이 때, 시스템이 멈추거나 불안정해지는 것을 막기 위해 Linux 커널은 OOM-Killer(Out-Of-Memory Killer)라는 특별한 메커니즘을 작동시킵니다. OOM-Killer는 메모리를 과도하게 사용하는 프로세스를 강제로 종료하여 시스템을 보호하는 역할을 합니다. 하지만 어떤 프로세스가 종료될지 예측하기 어렵고, 중요한 프로세스가 종료될 경우 심각한 문제가 발생할 수 있습니다. […]

NUMA 환경에서의 메모리 접근 지연 분석과 튜닝

NUMA 환경 이해와 성능 최적화 가이드 NUMA(Non-Uniform Memory Access)는 현대 서버 아키텍처에서 흔히 볼 수 있는 메모리 구성 방식입니다. NUMA 환경에서는 CPU 코어가 메모리에 접근하는 속도가 코어가 속한 노드(Node)의 메모리에 접근할 때와 다른 노드의 메모리에 접근할 때 달라집니다. 이러한 차이를 이해하지 못하고 애플리케이션을 실행하면 성능 저하가 발생할 수 있습니다. 이 글에서는 NUMA 환경의 기본 개념부터 […]

cgroup v2와 systemd의 관계를 커널 레벨에서 뜯어보기

cgroup v2와 systemd 깊이 알아보기 cgroup v2와 systemd는 현대 리눅스 시스템 관리의 핵심 구성 요소입니다. 이 둘은 프로세스 리소스 관리를 효율적으로 수행하고, 시스템의 안정성과 성능을 향상시키는 데 중요한 역할을 합니다. 이 글에서는 cgroup v2와 systemd의 관계를 커널 레벨에서 뜯어보고, 실제 활용 방법과 유용한 팁을 제공하여 독자들이 이 기술을 더욱 잘 이해하고 활용할 수 있도록 돕고자 […]

프로세스가 아닌 스레드의 관점에서 본 Linux 스케줄러의 진화

프로세스가 아닌 스레드 관점에서 보는 리눅스 스케줄러의 진화 리눅스 운영체제의 핵심 중 하나인 스케줄러는 시스템 내의 여러 프로세스와 스레드가 CPU 자원을 공정하고 효율적으로 사용할 수 있도록 관리하는 역할을 담당합니다. 흔히 프로세스 관점에서 스케줄러를 이해하지만, 현대적인 멀티스레드 애플리케이션의 중요성이 커짐에 따라 스레드 관점에서 스케줄러의 동작 방식을 이해하는 것이 더욱 중요해졌습니다. 이 글에서는 리눅스 스케줄러의 진화를 스레드 […]