리누스 토르발스, AI로 리눅스 커널 파일 읽기 성능 개선 패치 작성

리누스 토르발스(Linus Torvalds)가 AI 코딩 도구 클로드 코드(Claude Code)를 활용해 리눅스 커널의 파일 읽기 성능 개선 패치 8개를 작성했다. 지디넷(ZDNet)은 10월 14일 토르발스가 깃 제출문에서 코드와 테스트 프로그램, 검토 자료 등을 대형언어모델(LLM) 보조 도구의 도움을 받아 만들었다고 밝혔다고 보도했다. 지디넷에 따르면 패치는 아직 실험 단계로, 성능 개선과 함께 해결되지 않은 메모리 관리 문제도 남아 있다.

8개 패치로 소규모 읽기 병목 개선

패치가 겨냥한 것은 여러 스레드가 같은 파일에서 적은 양의 데이터를 반복해서 읽을 때 발생하는 페이지 캐시의 경합이다. 페이지 캐시는 파일 데이터를 메모리에 보관하는 커널 영역이다. 기존 방식에서는 각 스레드가 데이터를 뒷받침하는 메모리 페이지 묶음인 폴리오의 참조 횟수를 반복해서 갱신했다. 이 과정에서 여러 프로세서 코어가 공유 캐시 라인을 두고 경쟁하면 읽기 성능이 떨어질 수 있다.

토르발스는 인텔 코어 i7-8565U 프로세서를 탑재한 노트북에서 4코어·8스레드 환경을 시험했다. 8개 스레드가 같은 페이지를 대상으로 16바이트씩 pread()를 호출했을 때, 코어 간 부하를 나타내는 HITM 측정치의 99.92%가 공유 캐시 라인과 관련된 것으로 나타났다. 해당 작업의 처리량은 초당 약 990만~1040만회에서 패치 적용 뒤 약 3000만~3300만회로 늘었다. 읽기 1회당 커널 사이클은 약 2950회에서 725회로 줄었다.

성능 향상은 특정 시험 결과…병합 미정

패치의 핵심은 페이지 캐시에서 제거한 메모리를 즉시 재사용하지 않고, RCU(읽기 복사 갱신) 유예 기간이 지난 뒤 재사용하도록 미루는 것이다. 이에 따라 RCU 읽기 구간에서 데이터를 복사하는 동안 폴리오 참조 횟수를 올리지 않아도 된다. 같은 시험에서 단일 스레드 읽기의 커널 사이클도 약 452~454회에서 408~409회로 감소했다. 토르발스는 CPU가 더 많거나 소켓이 여러 개인 시스템에서 효과가 더 클 수 있다고 했지만, 더 큰 시스템에서는 측정하지 않았다고 밝혔다.

측정 결과를 리눅스 전체가 세 배 빨라진 것으로 해석해서는 안 된다. 수치는 특정 노트북에서 특정 소규모 읽기 작업을 수행해 얻은 결과다. 메모리 재사용을 미루면 RCU 유예 기간이 끝날 때까지 해당 페이지를 다시 쓸 수 없다는 부담도 생긴다. 토르발스는 깃 제출문에서 메모리 회수 문제가 패치 묶음에서 가장 해결이 덜 된 부분이라고 설명했다. 아직 매핑되지 않은 사용자 페이지를 읽을 때는 기존 경로로 넘어가기 전에 예외 처리가 한 차례 더 실패하는 성능 저하도 확인됐다.

원문에 따르면 패치는 10월 13일 기준 리눅스 7.3-rc6 메인라인에 포함되지 않았다. 병합 여부와 시점은 정해지지 않았다. 이번 작업은 토르발스가 AI를 버그 찾기나 검토뿐 아니라 실제 커널 코드 작성에도 활용한 사례다. 다만 패치가 정식 커널에 반영되려면 성능 결과뿐 아니라 지연된 메모리 회수와 예외 처리에서 나타난 문제도 검토해야 한다.

RELATED ARTICLES

RECOMMENDED STORIES