CS 기초 · 심화
NUMA(Non-Uniform Memory Access) 아키텍처 환경에서 애플리케이션의 메모리 접근 성능을 최적화하기 위한 OS 수준의 고려사항과 구체적인 전략에 대해 설명해 주십시오. 특히, 메모리 할당 정책과 스케줄링 관점에서 어떤 최적화 기법을 적용할 수 있을까요?
힌트 · `numactl`과 같은 도구를 활용한 프로세스-메모리 바인딩, 페이지 마이그레이션 정책, 그리고 캐시 일관성 유지를 위한 OS의 역할을 중심으로 설명해야 합니다.
NUMA 인식로컬 메모리 할당CPU affinity페이지 마이그레이션스케줄링 정책
모범답안
NUMA 환경에서 애플리케이션 성능 최적화는 핵심입니다. OS 수준에서 가장 중요한 건 NUMA 인식입니다. 프로세스가 실행되는 CPU 코어와 가장 가까운 메모리 노드에 데이터를 할당하는 로컬 메모리 할당이 기본입니다.
이를 위해 numactl 같은 도구를 사용해서 프로세스와 메모리 노드를 바인딩할 수 있습니다. 예를 들어, 특정 프로세스를 0번 노드에서 실행하고, 메모리도 0번 노드에 할당하도록 지정하는 거죠.
스케줄링 측면에서는 CPU affinity를 활용합니다. 특정 프로세스를 특정 CPU 코어에 고정시켜서, 메모리 접근 거리를 최소화하는 겁니다.
만약 프로세스가 여러 노드의 메모리에 접근해야 한다면, 페이지 마이그레이션 정책을 고려해야 합니다. 자주 사용되는 페이지를 프로세스가 실행되는 노드로 옮겨서 성능을 향상시킬 수 있습니다. 물론, 캐시 일관성 유지는 OS의 중요한 역할입니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 운영체제 면접 질문
- 페이징(Paging) 기법이 가상 메모리 시스템에서 어떻게 작동하는지 설명하고, 페이지 테이블(Page Table)과 TLB(Translation Lookaside Buffer)의 역할 및 이들이 메모리 접근 속도에 미치는 영향에 대해 논해보세요.
- 운영체제의 CPU 스케줄링 알고리즘 중 라운드 로빈(Round Robin)과 우선순위(Priority) 스케줄링의 특징과 장단점을 비교 설명하고, 각각 어떤 종류의 시스템 환경에 적합한지 예를 들어 설명해주세요.
- 멀티스레드 환경에서 공유 자원에 대한 동시성 문제를 해결하기 위한 세마포어(Semaphore)와 뮤텍스(Mutex)의 차이점을 설명하고, 각각 어떤 상황에서 더 적합하게 사용될 수 있는지 구체적인 시나리오를 제시해주세요.
- 리눅스 커널의 Completely Fair Scheduler(CFS)는 공정성을 유지하면서도 처리량을 극대화하기 위해 어떤 핵심적인 원리들을 적용하고 있습니까? 특히, `vruntime`과 레드-블랙 트리를 활용한 스케줄링 큐 관점에서 CFS의 동작 방식을 심층적으로 설명해 주십시오.
- 시스템의 물리 메모리가 고갈될 위기에 처했을 때, 리눅스 OOM Killer는 어떤 기준으로 프로세스를 선택하여 종료시키며, OOM Killer의 동작 방식이 애플리케이션의 안정성과 가용성에 미치는 영향은 무엇입니까? OOM Killer의 동작을 제어하거나 회피할 수 있는 OS 수준의 설정 및 설계 기법에 대해 논하시오.
- ZFS나 Btrfs와 같은 Copy-on-Write(CoW) 파일 시스템은 기존 저널링 파일 시스템과 비교했을 때 데이터 무결성, 스냅샷, 데이터 보호 측면에서 어떤 근본적인 장점과 단점을 가집니까? CoW 파일 시스템의 내부 동작 원리를 설명하고, 대규모 데이터 환경에서 CoW 파일 시스템을 효과적으로 활용하기 위한 설계 전략을 제시해 주십시오.