LWN Weekly Report: 2026년 7월 30일 주요 뉴스

이번 주 LWN.net 위클리 에디션 주요 내용이다. RCU를 대체할 수 있는 새로운 락-프리 메커니즘 “hazard pointer”의 커널 도입 논의, LSFMM+BPF 서밋 후속 취재로 나온 스왑 백엔드 추상화·netkit 제로카피 네트워킹·인라인 함수 BPF 트레이싱 소식, 새로 개편된 Debian DFSG 팀의 첫 운영 보고, 기밀 컴퓨팅용 슬림 GRUB을 승인한 Fedora, 그리고 커널 컴파일을 향해 나아가고 있는 GCC Rust 프론트엔드 gccrs의 진행 상황까지 다룬다.

RCU의 대안, Hazard Pointer가 커널 진입을 노린다

커널의 RCU(read-copy-update)는 락-프리 자료구조 갱신에 널리 쓰이지만, 참조가 다 사라졌음을 확인하기까지 메모리 사용량이 늘고 지연이 발생할 수 있다는 단점이 있다. Mathieu Desnoyers와 Paul McKenney가 제안한 hazard pointer 구현은 이 문제에 다른 방식으로 접근하는 대안이다. RCU가 코드 전체에 걸친 “읽기 구간(read-side critical section)”을 보호한다면, hazard pointer는 개별 포인터 하나하나를 등록해 보호하는 더 세밀한 모델을 쓴다. API는 hazptr_acquire()로 포인터를 등록하고 hazptr_release()로 해제하며, 객체를 교체하는 쪽에서는 hazptr_synchronize()를 호출해 그 포인터를 아무도 참조하지 않을 때까지 기다린 뒤 메모리를 해제한다. RCU와 달리 preemption을 막을 필요가 없다는 점도 차이다.

구현은 CPU마다 4개의 슬롯을 두는 방식이다. hazptr_acquire()는 빈 슬롯에 보호할 주소를 기록하고, hazptr_synchronize()는 모든 CPU의 슬롯을 훑어 해당 주소가 없어질 때까지 기다린다. 읽기와 쓰기 순서가 꼬여 아직 참조 중인 객체가 해제되는 경쟁 상태를 막기 위해, 슬롯은 비어있음(NULL)·점유 중(포인터 값)에 더해 “할당 진행 중”을 뜻하는 HAZPTR_WILDCARD라는 제3의 상태를 거친다. 슬롯 4개를 초과하는 경우를 위한 오버플로 컨텍스트, 스레드가 선점될 때 per-CPU 슬롯을 오버플로 슬롯으로 옮겨주는 스케줄러 콜백까지 갖추고 있어 얼핏 단순해 보이는 아이디어치고는 구현이 꽤 정교하다.

댓글에서 개발자 Mathieu Desnoyers(닉네임 compudj)는 hazptr와 RCU의 관계를 “hazptr가 참조 카운팅을 대체하는 저비용 대안이라면, RCU는 읽기-쓰기 락을 대체하는 저비용 대안”이라고 정리했다. hazptr는 grace period를 기다릴 필요 없이 더 빠르게 객체를 회수할 수 있고 preemptible/blocking 컨텍스트에서도 쓸 수 있지만, RCU처럼 자료구조 순회 전체를 보장하지는 못하고 개별 포인터 단위로만 동작한다는 차이가 있다. McKenney 본인도 “RCU는 읽기 쪽이 무조건 순회를 허용하지만, hazard pointer는 특정 포인터에 대해 ‘안 된다’고 말할 수 있고, 그게 바로 불필요한 회수 지연을 피할 수 있는 이유”라고 덧붙였다. 다만 이 패치셋은 아직 실제로 이 API를 사용하는 서브시스템(사용자) 없이 올라온 상태라, 새 서브시스템 머지에 통상 요구되는 조건을 채우지 못했다. 실제 사용 사례가 나와야 API의 부족한 부분도 드러날 것으로 보이며, 머지 시점을 가늠하기는 아직 이르다.

LSFMM+BPF 서밋 후속: 스왑 백엔드 추상화, netkit 제로카피, 인라인 함수 디버깅

5월 크로아티아 자그레브에서 열렸던 2026 LSFMM+BPF 서밋 취재가 이번 주에도 이어졌다. Baoquan He는 스왑 계층과 백엔드 장치 사이의 인터페이스를 swap_ops 구조체로 추상화하는 작업을 7차 리비전까지 진행해 머지를 눈앞에 뒀지만, 서밋 이후 Christoph Hellwig가 스왑 I/O 배칭 성능 개선에 초점을 맞춘 다른 접근을 들고 나왔다. He의 안이 블록 장치 동기/비동기·네트워크 파일시스템까지 세 가지 swap_ops를 정의한 반면, Hellwig의 안은 can_merge()·submit_write()·submit_read() 세 함수로 이뤄진 더 단순한 구조체 두 개(블록 장치용, 파일시스템용)만 둔다. Hellwig의 시리즈는 5차 리비전까지 왔지만, 정작 발목을 잡은 건 패치 자체가 아니라 리뷰 도구 Sashiko가 찾아낸 기존 코드의 버그들이었다 — 이 버그를 지금 고칠지 나중으로 미룰지를 두고 의견이 갈려 7.3 머지 창을 맞출 수 있을지는 불투명하다.

Daniel Borkmann은 VM이 네트워크 네임스페이스 안에서도 효율적으로 통신할 수 있게 하는 netkit의 진전을 발표했다. 핵심은 queue leasing으로, VMM이 VM의 가상 네트워크 큐를 물리 NIC의 실제 큐에 직접 묶어 진짜 제로카피 수신을 가능하게 한다. 수신 쪽은 이미 huge page나 BIG TCP 같은 다른 최적화와도 잘 맞물려 안정적으로 동작하지만, 송신 쪽은 물리 장치가 해당 방식의 DMA를 지원하는지부터 확인해야 해 더 복잡하다. Cilium이 이 큐 임대를 실제로 설정하는 주체다. 시간이 남자 Borkmann은 BPF로 사용자 공간 프로그램을 라이브 패치하는 아이디어도 꺼냈는데 — 검증된 BPF 프로그램을 실행 중인 프로세스의 실행 메모리에 주입해 크래시 없는 보안 패치를 적용하자는 구상이다. Song Liu는 커널과 달리 사용자 공간에서는 검증기가 보장할 수 있는 속성이 제한적이라 크래시 위험이 여전할 것이라 지적했고, Andrii Nakryiko는 우회 점프를 삽입하는 방식 자체가 uprobe의 단순한 breakpoint 방식보다 훨씬 까다롭다고 짚었다. 아직은 전적으로 사변적인 단계다.

커널에는 10만 개가 넘는 인라인 함수가 538,090곳에 흩어져 있는데, 정작 BPF 트레이싱은 인라인된 함수의 주소를 BTF에서 찾지 못해 실패한다. Alan Maguire가 제안한 확장안은 호출 지점별 정보(“location section”)와 이를 가리키는 재사용 가능한 “location prototype”·”location parameter”를 BTF에 추가하는 것이다. 중복 제거를 거치면 53만 개가 넘는 호출 지점이 5만 7천여 개의 prototype과 1만 7천여 개의 parameter만으로 표현되며, 전체 추가 데이터는 약 11MB, 별도 커널 모듈로 분리해 압축하면 3.5MB까지 줄어든다. pahole 유틸리티도 이 새 BTF 태그를 정렬할 수 있도록 함께 수정됐다. 다만 커널 트리 밖 모듈을 위해서는 resilient module BTF로 별도 재배치가 필요해 이 부분은 아직 합의된 방향이 없고, 패치셋 자체도 아직 머지되지 않았다.

Debian 새 DFSG 팀, 첫 운영 보고

2025년 10월 ftpmaster 팀이 아카이브 인프라를 맡는 Archive Operations 팀과, 신규 패키지의 DFSG(Debian Free Software Guidelines) 준수 여부를 심사하는 DFSG 팀으로 분리됐다. DebConf26에서 Andrew McMillan은 이 개편 이후 첫 운영 현황을 공유했는데, 분리 이전 750개가 넘던 신규 큐 적체가 지금은 평소 30개 이하로 관리되고 있다고 밝혔다. 팀은 dak(Debian Archive Kit)를 직접 다루는 대신 자체 개발한 dnq 커맨드라인 도구로 리뷰 큐를 관리하며, 오래된 패키지 우선·인기도(popcon) 가중치를 함께 반영해 우선순위를 매긴다. 대부분의 패키지는 2~3일 안에 처리된다고 한다.

McMillan은 debian/copyright 파일을 기계 판독 가능한 형식으로 표준화한 DEP-5 포맷을 연내 신규 패키지에 의무화하고, 소급 적용까지 검토 중이라고 밝혔다. 다만 댓글에서 Debian 개발자 ballombe는 패키지가 실제로 DFSG를 충족하는지는 소스 파일의 라이선스 자체에 달린 것이지 debian/copyright의 형식과는 무관하며, DFSG 팀이 정책에 없는 요건을 강제할 권한은 없다고 지적했다 — DEP-5가 애초 “의무화하지 않는다”는 조건으로 채택된 포맷이라는 점을 짚은 것이다. 팀 규모는 아직 5명뿐이라 인력 충원도 계속 필요한 상황이며, McMillan은 장기적으로는 업로드 권한이 있는 모든 Debian 개발자가 쿼럼 투표로 신규 패키지를 승인할 수 있는 구조까지 구상하고 있다고 밝혔다.

Fedora, 기밀 컴퓨팅용 슬림 GRUB 승인

Fedora 45(10월 예정)를 위해 Leo Sandoval과 Marta Lewandowska가 제안한 슬림 GRUB 패키지가 7월 7일 FESCo 승인을 받았다. UKI(unified kernel image)를 BLS(bootloader specification) 방식으로 부팅하는 데 필요한 모듈만 남긴 UEFI 전용 빌드로, 기존 GRUB을 대체하는 게 아니라 별도 패키지로 추가된다. 주 사용처는 클라우드 VM에서 기밀 컴퓨팅용으로 쓰이는 “sealed bootc” 이미지 — 펌웨어부터 UKI, fs-verity가 적용된 composefs 저장소까지 Secure Boot 체인 전체가 검증되는 부팅 이미지 — 이며, 이 방식을 처음 쓰게 될 것은 Fedora CoreOS다. 공격 표면을 줄이고 업데이트 빈도를 낮추려는 목적이다.

흥미로운 지점은 이 제안의 공동 발의자인 Lewandowska가 불과 2년 전 GRUB을 대체하자며 “nmbl”(no more bootloader) 프로젝트를 발표했던 인물이라는 것이다. 당시 그는 Red Hat이 GRUB에 수백 개의 다운스트림 패치를 떠안고 있고 취약점도 잦다고 비판했지만, 이번에는 “올해 GRUB 업스트림이 GitLab으로 옮기며 CI가 훨씬 좋아지고 활발해졌다”며 입장을 바꿨다 — 반면 nmbl 관련 저장소는 2025년 8월 이후 업데이트가 없다. systemd-boot를 쓰지 않은 이유를 두고도 논쟁이 있었다. 제안서는 systemd-boot가 GRUB만큼 광범위하게 테스트·퍼징되지 않았다고 주장했는데, Lennart Poettering은 “Red Hat 기밀 컴퓨팅 팀이 기여한 것을 포함해 systemd-boot/systemd-stub에 계속 새 기능을 추가하고 있다”며 “정말 짜증난다”고 반발했고, Zbigniew Jędrzejewski-Szmek도 systemd-boot가 OSS-Fuzz로 퍼징되고 있다며 제안서의 주장이 “현실과 동떨어져 있다”고 지적했다. 결국 새 기능 추가가 없다는 문구는 제안서에서 삭제됐지만, 승인 자체는 그대로 유지됐다.

gccrs, 커널 컴파일을 향한 진전

Rust용 GCC 프론트엔드를 만드는 gccrs 프로젝트는 2026년 상반기 내내 커널 크레이트 컴파일에 집중했다. 목표는 GCC 특정 버전이 아니라 세 단계 역량 기준으로 재편됐다 — core 크레이트만 쓰는 “임베디드 Rust 컴파일러”, alloc과 커널 전용 크레이트까지 지원하는 “Rust for Linux 컴파일러”, 그리고 범용 Rust 애플리케이션을 겨냥한 “범용 컴파일러” 순이다. 현재는 첫 단계가 거의 완성됐고 두 번째 단계가 진행 중이다.

커널 크레이트를 실제로 컴파일해보며 드러난 문제가 여럿이다. Rust의 RAII 기반 자원 해제(Drop trait)는 변수가 조건부로 이동되거나 부분적으로만 초기화된 경우 제어 흐름 그래프를 분석해 런타임 “drop flag”를 생성해야 하는데, 이 분석이 빠져 있어 Drop::drop() 호출이 누락되거나 잘못 실행되는 문제가 있었다. 커널에서는 이게 곧 락 관리 버그로 이어진다 — Rust for Linux API가 반환하는 MutexGuardDrop 구현이 락 해제를 담당하는데, 이 호출이 누락되면 락이 영원히 풀리지 않는다. GSoC 참가자 Janet Chien이 5월부터 이 Drop 인프라 구축을 전담하고 있다. 또 다른 문제는 이름 해석이었다 — 함수를 찾을 때 값 네임스페이스에서만 경로를 해석했는데, 실제로는 모듈과 공개 임포트가 타입 네임스페이스에 있어 모듈 구조부터 타입 네임스페이스에서 해석해야 하는 구조였다. 이 문제를 고치며 core 크레이트의 깊이 중첩된 임포트가 5월부터 제대로 해석되기 시작했다. 지금은 간단한 독립 실행 프로그램 정도만 컴파일 가능한 수준이지만, 팀은 앞으로 진전이 빨라질 수 있다고 본다.

짧은 소식

  • 커널 개발자 Dan Williams 별세: 리눅스 재단 기술 자문 위원회(TAB)에서 오래 활동해온 고참 커널 개발자 Dan Williams가 7월 21일 세상을 떠났다. Dave Hansen과 Thomas Gleixner가 쓴 추모글이 LWN에 게재됐고, 유가족을 위한 후원 모금도 진행 중이다.
  • 커널 7.2-rc5 (7월 26일): 15,256개 non-merge changeset, 2,452명의 개발자(526명 첫 기여)가 참여했다. Linus는 “규모가 좀 크지만 딱히 이상하거나 걱정되는 건 없다”고 평했다.
  • Debian, LLM 사용 총의(GR) 투표 착수: 전면 금지, “실행 가능한 한” 배제, 조건부 허용 세 가지 안을 놓고 토론이 시작됐다. 투표 일정은 아직 미정이다.
  • Codeberg, LLM 생성 코드 호스팅 금지: 호스팅 중인 프로젝트를 LLM 학습에 쓰지 않겠다는 약속에 더해, 프롬프트 결과물을 그대로 올린 “일회성” LLM 생성 소프트웨어의 호스팅 자체를 금지하는 정책을 채택했다.
  • GCC, AI 기여 정책 발표: 저작권상 “법적으로 유의미한”(약 15줄 이상) 기여에 LLM 생성 콘텐츠가 포함되면 거부하되, 테스트 케이스는 예외로 허용한다. 버그 탐색·리뷰 등 코드에 포함되지 않는 용도의 LLM 활용은 막지 않는다.
  • 네트워킹 서브시스템, LLM 리뷰 정책 갱신: Paolo Abeni는 패치 작성자가 AI 생성 리뷰 피드백에도 성실히 응답해야 하며, 사전에 LLM 리뷰를 돌리지 않아 리뷰 코멘트가 쏟아지는 대형 시리즈는 메인테이너의 관심을 받기 어려울 것이라고 밝혔다.
  • GNU Binutils 2.47 / glibc 2.44 릴리스: Binutils는 RISC-V 확장 지원과 AArch64 -M annotate 옵션이 추가됐고 32비트 s390 타깃은 deprecated됐다. glibc는 시스템 전역 튜너블 설정 파일 /etc/tunables.conf가 새로 생겼다.
  • Linux Plumbers Conference 2026 등록 시작: 10월 5~7일 체코 프라하에서 열린다. 티켓이 빨리 매진되는 편이라 서두르는 게 좋다.

이번 주 핵심 요약

  • Hazard pointer는 RCU와 상호 배타적이지 않은 보완재에 가깝다 — grace period 없이 빠르게 회수하되 자료구조 전체 순회 보장은 포기하는 트레이드오프이며, 실사용 서브시스템이 나와야 진짜 평가가 가능하다.
  • 스왑 백엔드 추상화는 7차 리비전까지 간 원안 대신 더 단순한 경쟁안이 부상했는데, 정작 병목은 새 코드가 아니라 Sashiko가 찾아낸 기존 버그를 언제 고치느냐는 문제로 옮겨갔다 — AI 리뷰 도구가 개발 일정에 실질적 영향을 주기 시작했다는 신호다.
  • Debian DFSG 팀은 분업과 자체 도구로 750개였던 큐 적체를 30개 이하로 줄이며 ftpmaster 분할이 의도대로 작동하고 있음을 보여줬지만, DEP-5 의무화처럼 팀 권한 범위를 넘어서는 시도에는 벌써 견제가 들어오고 있다.
  • Fedora의 슬림 GRUB 승인 뒷이야기는 결국 “GRUB이냐 systemd-boot냐”라는 해묵은 부트로더 논쟁의 재방송이었고, 불과 2년 전 GRUB 폐기를 주장했던 발의자가 GRUB의 GitLab 이전 이후 입장을 바꿨다는 아이러니가 눈에 띈다.
  • Debian·Codeberg·GCC·리눅스 네트워킹 서브시스템까지 이번 주에만 네 개 프로젝트가 LLM 기여에 대한 공식 입장을 새로 내놓거나 정비했다 — 커뮤니티마다 결론은 다르지만, “정책이 필요하다”는 데는 이견이 없어 보인다.

원문: LWN.net Weekly Edition for July 30, 2026

답글 남기기