에이전트 코딩 · 2026년 10월 16일 ★★★

토르발스가 10월 13일 LKML 에 올린 페이지 캐시 시리즈 3판에서 키릴 슈체마우가 쓰지 않은 데이터를 읽을 수 있는 경쟁 상태를 찾았고, 토르발스는 고칠 방향을 답한 뒤 시리즈를 그에게 넘겼어요

토르발스는 10월 13일(미국 시각) LKML 에 "Improve page refcount scalability" 를 올려 rcu-free-v3 브랜치를 공개했어요. 10월 10일 다룬 noref-filemap-read-with-llm 브랜치의 후속이고, 자주 읽히는 폴리오만 RCU 유예 기간 뒤에 해제해 참조 카운트 없이 읽게 했으며, 인공 벤치마크 64스레드에서 초당 읽기가 1,330만 건에서 3억 400만 건으로 늘었다고 적었어요. 같은 날 키릴 슈체마우가 filemap_read_rcu_batch() 에서 다른 CPU 가 폴리오를 캐시에서 빼고 새로 써서 파일 크기를 늘리면, 읽는 쪽이 늘어난 크기로 옛 폴리오를 복사해 사용자가 쓰지 않은 데이터를 돌려준다고 보고했어요. 토르발스는 파일 크기를 먼저 읽고 폴리오 재확인을 한 번으로 합치자고 답하며 휴가와 병합 기간을 이유로 시리즈를 맡아 달라고 했고, 슈체마우는 다음 날 수락하며 고친 코드를 올렸어요.

용어 풀이
LKML
리눅스 커널 메일링 리스트, 커널 패치를 올리고 검토하는 공개 메일 목록
RCU
읽는 쪽이 잠금 없이 읽게 하고, 해제는 모든 읽기가 끝난 뒤로 미루는 커널 동기화 방식
폴리오(folio)
리눅스 커널이 페이지 캐시의 메모리 페이지를 묶어 관리하는 단위
경쟁 상태(race condition)
여러 실행 흐름의 순서에 따라 결과가 달라져 오류가 생기는 상황
운영자 인사이트

잠금 없이 읽는 코드는 경쟁 상태 하나가 데이터 노출로 이어지므로, 에이전트가 짠 동시성 코드도 사람 검토를 거쳐야 해요. 이번 경쟁 상태는 해당 영역에서 별도 구현을 해 본 개발자가 찾았어요. 동시성 패치를 에이전트에게 맡길 때는 그 영역 전문가의 검토 일정을 처음부터 계획에 넣어 두세요.

여러 관점으로 보기
  • 토르발스의 3판 공개 rcu-free-v3 브랜치와 64스레드 인공 벤치마크 수치를 밝히고, LLM 의 도움을 받아 커밋 설명이 평소보다 길다고 적었어요. LKML (Linus Torvalds)
  • 토르발스의 답과 인계 검사 순서를 바꿔 재확인을 한 번으로 합치자고 제안하고, 금요일부터 휴가라며 슈체마우에게 시리즈 전체를 맡아 달라고 했어요. LKML (Linus Torvalds)
  • 설계 반론 매튜 윌콕스는 PG_rcu_free 플래그가 마음에 들지 않고 대부분의 폴리오는 회수로 해제되니 그쪽을 최적화하자고 했고, 토르발스는 코드로 보여 달라고 반박했어요. LKML (Matthew Wilcox)
  • 매체 정리 클로드 코드로 만든 페이지 캐시 작업과 리뷰에서 나온 경쟁 상태, 슈체마우에게 넘어간 경위를 한 기사로 정리했어요. The New Stack

원본 보기 (hn:claude-code)