장치 이벤트나 파일, 네트워크 I/O 요청이 들어옵니다.
event or request폴링, 인터럽트, DMA, 혼합 방식을 고르는 기준
I/O 경로는 하나만 고정하지 않습니다. 이벤트 빈도, 전송량, 지연 시간, CPU 여유를 보고 폴링과 인터럽트, DMA를 조합합니다.
드물면 인터럽트, 계속 몰리면 폴링 전환이 유리합니다.
rare vs burst블록이 크거나 반복 전송이면 DMA 링과 버퍼를 씁니다.
small vs bulk완료 큐, 인터럽트, 폴링 루프 중 비용이 낮은 길로 회수합니다.
completion path짧고 확실한 대기
장치가 곧 준비될 때 응답 지연이 가장 낮습니다.
대기가 길어지면 CPU 시간이 그대로 소모됩니다.
드문 이벤트 알림
CPU가 다른 일을 하다가 장치 완료 때만 깨어납니다.
초당 이벤트가 너무 많으면 핸들러 비용이 커집니다.
대량 데이터 전송
데이터 복사를 장치와 DMA 컨트롤러가 처리합니다.
CPU는 설정과 완료 처리에 집중합니다.
부하에 따른 전환
NAPI는 저부하 인터럽트, 고부하 폴링을 섞습니다.
io_uring은 제출 큐와 완료 큐로 배치 비용을 낮춥니다.
NAPI식 네트워크 수신
io_uring식 비동기 I/O
애플리케이션은 제출 큐에 요청을 쌓고, 커널은 완료 큐로 결과를 돌려줍니다. 필요하면 완료 큐를 폴링해 시스템 호출과 인터럽트 비용을 줄입니다.