CS 기초 · 심화
리눅스 커널의 다양한 I/O 스케줄러(예: Noop, Deadline, CFQ, MQ-deadline)는 각각 어떤 특성과 목표를 가지고 있으며, 특정 워크로드(예: 데이터베이스, 웹 서버, 가상화 환경)에서 최적의 성능을 얻기 위해 어떤 I/O 스케줄러를 선택하고 튜닝해야 하는지 구체적인 근거와 함께 설명해 주십시오.
힌트 · 각 스케줄러의 요청 병합, 재정렬 전략, 그리고 NVMe와 같은 고속 저장 장치 환경에서의 MQ-deadline의 중요성을 강조하며, 워크로드별 특성을 고려한 선택 가이드라인을 제시해야 합니다.
I/O 스케줄러NoopDeadlineCFQMQ-deadline
모범답안
리눅스 I/O 스케줄러는 디스크 I/O 요청 순서를 결정하여 성능을 최적화합니다. Noop은 가장 단순하며, 요청을 먼저 들어온 순서대로 처리합니다. Deadline은 읽기/쓰기 요청에 마감 시간을 부여하여 기아 현상을 방지하며, CFQ는 각 프로세스에 공정한 I/O 시간을 할당합니다.
최근에는 NVMe와 같은 고속 저장 장치에 최적화된 MQ-deadline이 중요해졌습니다. MQ-deadline은 멀티 큐를 사용하여 병렬성을 높이고, 높은 처리량을 제공합니다.
워크로드에 따라 선택이 달라집니다. 데이터베이스는 낮은 지연 시간이 중요하므로 Deadline이나 MQ-deadline이 적합하며, 웹 서버는 CFQ를 통해 여러 프로세스에 공정한 I/O를 제공할 수 있습니다. 가상화 환경에서는 게스트 OS 간의 I/O 간섭을 줄이기 위해 CFQ나 MQ-deadline을 고려할 수 있습니다. 튜닝 시에는 각 스케줄러의 파라미터를 조정하여 워크로드에 맞게 최적화해야 합니다. 예를 들어, deadline 스케줄러의 read_expire나 write_expire 값을 조정할 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 운영체제 면접 질문
- 리눅스 커널의 Completely Fair Scheduler(CFS)는 공정성을 유지하면서도 처리량을 극대화하기 위해 어떤 핵심적인 원리들을 적용하고 있습니까? 특히, `vruntime`과 레드-블랙 트리를 활용한 스케줄링 큐 관점에서 CFS의 동작 방식을 심층적으로 설명해 주십시오.
- 시스템의 물리 메모리가 고갈될 위기에 처했을 때, 리눅스 OOM Killer는 어떤 기준으로 프로세스를 선택하여 종료시키며, OOM Killer의 동작 방식이 애플리케이션의 안정성과 가용성에 미치는 영향은 무엇입니까? OOM Killer의 동작을 제어하거나 회피할 수 있는 OS 수준의 설정 및 설계 기법에 대해 논하시오.
- ZFS나 Btrfs와 같은 Copy-on-Write(CoW) 파일 시스템은 기존 저널링 파일 시스템과 비교했을 때 데이터 무결성, 스냅샷, 데이터 보호 측면에서 어떤 근본적인 장점과 단점을 가집니까? CoW 파일 시스템의 내부 동작 원리를 설명하고, 대규모 데이터 환경에서 CoW 파일 시스템을 효과적으로 활용하기 위한 설계 전략을 제시해 주십시오.
- Read-Copy Update(RCU)는 다중 코어 환경에서 읽기 중심의 데이터 구조에 대한 동시성 제어를 위해 널리 사용되는 기법입니다. RCU의 동작 원리(읽기 측, 쓰기 측)를 상세히 설명하고, 기존 락 기반 동기화 방식과 비교했을 때 RCU가 제공하는 성능상의 이점과 한계점은 무엇인지 논해 주십시오.
- 사용자 공간(User Space) 애플리케이션이 시스템 호출(System Call)을 통해 커널 공간(Kernel Space)의 서비스를 이용하는 전체 과정을 상세히 설명해 주십시오. 특히, 시스템 호출 트랩(trap) 발생부터 커널 내부의 핸들러 처리, 그리고 결과 반환까지의 메커니즘을 CPU 모드 전환과 보호 링(Protection Ring) 개념을 포함하여 기술하시오.