io_uring이 커널 7.2에서 도입한 Lockless MPSC 큐
io_uring을 쓰는 프로그램은 한 번에 여러 비동기 작업을 던져놓고 진행 상황을 추적한다. 그 말은 곧 커널 내부의 io_uring 서브시스템이 처리해야 할 작업(task) 목록을 항상 관리하고 있어야 한다는 뜻이다. 지금까지 io_uring은…
Linux Kernel
io_uring을 쓰는 프로그램은 한 번에 여러 비동기 작업을 던져놓고 진행 상황을 추적한다. 그 말은 곧 커널 내부의 io_uring 서브시스템이 처리해야 할 작업(task) 목록을 항상 관리하고 있어야 한다는 뜻이다. 지금까지 io_uring은…
퍼블릭 클라우드에서 VM 인스턴스 하나를 빌리는 일은 호스트 커널이나 같은 물리 서버 위에서 도는 다른 테넌트의 VM에는 손댈 수 없다는 전제 위에 서 있습니다. KVM(Kernel-based Virtual Machine)의 섀도 페이징(shadow paging)…
Ubuntu 서버를 운영하다 보면 apt upgrade 알림이나 MOTD에서 "N개의 보안 업데이트가 있습니다" 같은 문구를 자주 보게 된다. 그런데 막상 그 N개가 어떤 취약점(CVE)을 고치는 건지, 커널 패치라 재부팅이 꼭 필요한지,…
CPU 사용률은 낮은데 프로세스가 유독 느리게 느껴질 때가 있다. top이나 ps는 프로세스가 CPU를 얼마나 썼는지는 보여주지만, 그 프로세스가 CPU를 기다리느라 얼마나 시간을 날렸는지, 디스크 I/O나 스왑·메모리 회수 때문에 얼마나 블로킹됐는지는…
특정 프로세스가 어떤 시스템 콜을 얼마나 자주 호출하는지, 혹은 파일 하나를 여는 데 왜 갑자기 수십 밀리초가 걸리는지 알아내야 할 때 strace부터 떠올리기 쉽다. 하지만 strace는 매 시스템 콜마다 대상…
리눅스 커널의 rtmutex(real-time mutex)는 스레드 간 우선순위 역전을 막기 위한 priority inheritance 로직을 담고 있는, 십수 년 넘게 손댈 일이 거의 없던 오래된 락(lock) 서브시스템입니다. 그런데 2026년 7월, 바로 이…
free나 vmstat으로 메모리 상태를 보면 실제 사용 중인 메모리보다 buff/cache 항목이 훨씬 큰 경우가 많다. 이 대부분이 Page Cache인데, page_type이나 page->flags를 직접 들여다보지 않고서는 특정 페이지가 왜 캐시에 남아 있는지,…
동시접속이 많은 웹 서버나 DB 서버를 운영하다 보면 애플리케이션 코드에는 문제가 없는데도 특정 부하 구간에서 연결이 끊기거나 응답이 느려지는 상황을 만난다. 원인을 따라가 보면 애플리케이션이 아니라 커널 기본값이 병목인 경우가…
리눅스 커널의 패킷 필터링 서브시스템 nf_tables(넷필터)에서 발견된 CVE-2026-23111은 권한 없는 로컬 사용자가 root 권한을 얻을 수 있는 use-after-free 취약점입니다. 더 놀라운 점은 이 버그의 원인이 코드 한 글자, 정확히는 논리…
여러 개의 락(lock)을 다루는 드라이버나 서브시스템을 작성하다 보면, 어떤 경로에서는 lock_a를 먼저 잡고 lock_b를 나중에 잡는데 다른 경로에서는 반대로 lock_b를 먼저 잡는 실수를 저지르기 쉽다. 이런 ABBA 데드락은 두 경로가…