Audio Driver- XRUN?

최진철·2026년 3월 2일

Embedded 📲

목록 보기
3/4
post-thumbnail

XRUN이 무엇인가❓

"컴퓨터가 오디오 데이터를 처리하는 속도가 실제 재생/녹음 속도를 따라가지 못해 소리가 끊기는 현상"

1. 두 가지 유형의 xrun

① Underrun (언더런) - 주로 재생 시 발생

  • 상황: 스피커로 소리를 내보내야 하는데, 버퍼(데이터 임시 저장소)가 비어버린 상태입니다.
  • 결과: 재생할 데이터가 없으므로 아주 짧은 순간 소리가 멈춥니다. 우리 귀에는 '툭(Pop)' 하는 잡음이나 '지지직(Crackle)' 거리는 소리로 들립니다.

② Overrun (오버런) - 주로 녹음 시 발생

  • 상황: 마이크 등으로 들어온 데이터를 컴퓨터가 빨리 가져가서 처리해야 하는데, 버퍼가 이미 꽉 차서 새로 들어오는 데이터를 저장할 공간이 없는 상태입니다.

  • 결과: 새로 들어온 데이터가 버려지게 되어 녹음된 결과물에 중간중간 구멍이 생깁니다.

2. 왜 발생하나요?

오디오는 끊김 없는 실시간성이 생명이다. 하지만 컴퓨터는 다른 작업(백그라운드 프로세스, 네트워크 등)도 함께 처리하기 때문에 오디오 처리가 뒤로 밀릴 수 있다.

  • 버퍼 사이즈가 너무 작을 때: 지연 시간(Latency)을 줄이려고 버퍼를 너무 작게 설정하면, 컴퓨터가 데이터를 채워 넣을 시간이 부족해집니다.

  • CPU 부하가 높을 때: 다른 무거운 프로그램이 CPU를 점유하고 있으면 오디오 처리가 제때 이뤄지지 않습니다.

  • 시스템 인터럽트(IRQ) 충돌: 특정 하드웨어가 CPU의 관심을 독점하여 오디오 카드의 요청을 방해할 때 발생합니다.

3. 해결 방법 (최적화)

실시간 영상 처리 와 같이, 오디오 역시 실시간성이 중요하다.

  • 버퍼 사이즈 조절: 지연 시간이 조금 늘어나더라도 버퍼 크기를 키우면 xrun을 방지할 수 있습니다.

  • 실시간 커널(RT Kernel) 사용: 리눅스 환경이라면 오디오 프로세스에 최우선 순위를 부여하는 실시간 패치 커널을 사용합니다.

  • 우선순위 설정: chrt 같은 명령어를 통해 오디오 관련 프로세스의 스케줄링 우선순위를 높입니다.

  • 전력 관리 비활성화: CPU가 절전 모드로 들어가면서 클럭 속도가 변할 때 xrun이 발생하기 쉬우므로, 'High Performance' 모드로 고정하는 것이 좋습니다.

profile
세상의 어려운 문제를 해결하자

0개의 댓글