패스잇
CS 기초 · 심화

멀티스레드 환경에서 캐시 일관성(cache coherence)과 관련된 문제 중 'False Sharing'이 무엇인지 설명하고, 이로 인해 발생하는 성능 저하 문제를 어떻게 진단하고 해결할 수 있는지 구체적인 방안을 제시해 주십시오.

힌트 · False Sharing은 서로 다른 스레드가 독립적인 데이터를 수정함에도 불구하고 같은 캐시 라인에 위치하여 불필요한 캐시 동기화 오버헤드를 유발하는 현상입니다. 데이터 구조 패딩(padding)을 통해 캐시 라인 분리를 유도하여 해결할 수 있습니다.

False Sharing캐시 라인성능 프로파일링데이터 패딩구조체 정렬

모범답안

네, 멀티스레드 환경에서의 False Sharing에 대해 설명드리겠습니다.

False Sharing은 서로 다른 스레드가 독립적인 데이터를 수정하려 할 때, 해당 데이터들이 같은 캐시 라인에 위치하게 되어 발생하는 문제입니다. CPU는 캐시 라인을 단위로 데이터를 관리하기 때문에, 한 스레드가 특정 캐시 라인을 수정하면 다른 스레드에서 해당 캐시 라인을 사용하려 할 때 무효화(invalidation)가 발생합니다. 이로 인해 불필요한 캐시 동기화 오버헤드가 발생하여 성능이 저하됩니다.

성능 저하 진단은 주로 성능 프로파일링 도구를 사용하여 특정 스레드의 캐시 관련 지표(예: 캐시 미스율, 캐시 라인 무효화 횟수)를 분석함으로써 이루어집니다.

해결 방안으로는 데이터 구조 패딩(padding)이 가장 효과적입니다. 각 스레드가 접근하는 변수들을 서로 다른 캐시 라인에 배치되도록 데이터 구조에 빈 공간을 추가하는 것입니다. 예를 들어, 구조체 멤버들 사이에 더미 변수를 삽입하거나, 구조체 자체를 캐시 라인 크기의 배수로 정렬하는 방식으로 False Sharing을 방지할 수 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 동시성 / 멀티스레딩 면접 질문

← 동시성 / 멀티스레딩 면접 질문 전체 보기