패스잇
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 코칭합니다.

함께 보는 운영체제 면접 질문

← 운영체제 면접 질문 전체 보기