토르발스는 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