토르발스, 클로드로 페이지 캐시 패치 작성

최근 30일 조회수 — 좋아요 —

핵심 요약

클로드 코드로 만든 리눅스 페이지 캐시 패치가 특정 다중 스레드 읽기 시험에서 처리량을 약 3배 높였다.

토르발스, 클로드로 페이지 캐시 패치 작성 — 기사 주제를 표현한 AI 생성 개념 삽화
AI 생성 개념 삽화 · 실제 사건을 촬영한 사진이 아닙니다.

리누스 토르발스가 앤스로픽의 코딩 도구 클로드 코드(Claude Code)를 활용해 리눅스 커널의 페이지 캐시 성능 저하를 줄이는 패치 묶음을 작성했다. 토르발스는 Git 제출문에서 코드와 테스트 프로그램, 검토, 설명문 초안까지 “내 지휘 아래” 대규모 언어 모델 코딩 도우미가 만들었다고 밝혔다. 2024년부터 알려졌지만 이전 시도에서는 해결하지 못했던 다중 코어 환경의 공유 메모리 병목을 겨냥한 패치다.1

리눅스의 페이지 캐시는 파일 데이터를 메모리에 보관한다. 여러 스레드가 캐시된 파일에서 소량의 데이터를 반복해서 읽으면, 데이터가 담긴 폴리오(folio)의 참조를 얻고 반환할 때마다 참조 횟수를 원자적으로 갱신해야 한다. 이 쓰기 작업이 같은 캐시 라인에 집중되면서 프로세서 코어들이 서로 경쟁한다. 토르발스가 4코어·8스레드 인텔 코어 i7-8565U 노트북에서 8개 스레드로 같은 페이지에 16바이트 pread()를 반복한 실험에서는, 코어 사이에서 측정된 수정 상태 캐시 라인 적중(HITM)의 99.92%가 이 공유 캐시 라인에 몰렸다.1

새 패치는 페이지 캐시에서 제거한 메모리를 곧바로 할당자에 돌려주지 않고, 읽기-복사-갱신(RCU) 유예 기간이 지난 뒤 재사용한다. 덕분에 RCU 읽기 구간에서 폴리오 참조를 잡지 않은 채 데이터를 사용자 버퍼로 복사할 수 있어 공유 참조 횟수 갱신을 피한다. 같은 8스레드 시험에서 처리량은 초당 약 990만1,040만 회에서 3,000만3,300만 회로 늘었고, 읽기 한 번에 든 커널 사이클은 약 2,950에서 725로 줄었다. 단일 스레드에서는 452454사이클이 408409사이클로 낮아져 개선 폭이 작았다.1

다만 이를 리눅스 전체가 세 배 빨라졌다는 뜻으로 해석해서는 안 된다. 결과는 토르발스의 노트북에서 특정 소량 읽기 작업으로 측정한 값이며, 더 많은 CPU나 여러 소켓을 쓴 시스템은 실제로 시험하지 않았다. 메모리 재사용을 늦추면 RCU 유예 기간 동안 페이지를 활용할 수 없다는 대가도 따른다. 토르발스는 이 회수 문제를 패치 묶음에서 “가장 덜 해결된 부분”이라고 설명했다. 매핑되지 않은 사용자 페이지를 읽을 때 실패 예외를 한 차례 더 거친 뒤 기존 구현으로 돌아가는 성능 퇴행도 있다. 10월 13일 기준 패치 브랜치는 리눅스 7.3-rc6 메인라인에 포함되지 않았다.1

Footnotes

  1. ZDNet, “Linus Torvalds is using AI to develop Linux kernel code now” ↩ ↩2 ↩3 ↩4

읽기 목록은 이 브라우저에 저장됩니다.

출처

  1. Linus Torvalds is using AI to develop Linux kernel code now - ZDNET — ZDNet

이 글은 위 출처를 근거로 자동 생성된 뒤 발행됐습니다. 원문을 함께 확인해 주세요. 교차 보도 없이 단독 출처로 작성됐습니다.