리눅스 오디오 꼬라지를 보면 참 재밌다.
옛날에는 리눅스도 OSS를 썼다. 그냥 그걸 계속 발전시키면 됐을 일이다. 그런데 OSS가 상업화 노선을 타면서 상업용 OSS와 오픈소스 OSS로 갈라졌고, 결과는 둘 다 폭삭 망했다.
상업용 OSS는 돈을 제대로 벌지도 못했고, 오픈소스 OSS는 ALSA에 밀려 사라졌다. 그리고 승자인 줄 알았던 ALSA는 앱이 직접 쓰기엔 너무 복잡해서 그 위에 dmix, PulseAudio, JACK이 생겼다. 서로 싸우고 호환성 문제를 만들다가 이제는 PipeWire가 다시 다 통합하겠다고 나섰다.
결과적으로 소리 하나 내는데 구조가 이렇다.
FreeBSD는 OSS 기반 오디오를 계속 발전시켜서 커널 믹싱도 되고 구조도 단순하다. 그런데 Chromium, Qt, GStreamer 같은 리눅스 중심 앱들이 PulseAudio를 당연한 표준처럼 요구하니, FreeBSD에서도 멀쩡한 오디오 시스템을 두고 리눅스산 중간 계층을 억지로 설치해야 한다.
더 웃긴 건 PulseAudio를 지우려고 하면 Chromium과 LibreOffice까지 같이 지워진다는 것이다.
FreeBSD 오디오가 부족해서 PulseAudio가 필요한 게 아니다. 리눅스 앱 생태계가 자기들 중간 계층에 종속돼 있어서 다른 운영체제까지 그 똥을 수입하게 만드는 것이다.
이런 패턴은 리눅스 주변에서 한두 번 있었던 것도 아니다.
X386이 잘나가다가 상업화돼 Accelerated-X로 갈라졌고, 자유 진영은 XFree86으로 갔다. 결국 상업판도 주류를 잃고, 자유판도 나중에 운영과 라이선스 문제로 X.Org에 밀려 사라졌다.
항상 비슷하다.
문제는 상업화 자체가 아니다. 처음부터 개인이나 회사가 저작권과 통제권을 명확히 갖고 운영하면 폐쇄적이어도 오래가는 경우가 많다. 사용자도 애초에 회사 제품이라는 걸 알고 들어가기 때문이다.
제일 위험한 건 공동체 자산처럼 키운 뒤, 어느 날 갑자기 소유자 행세를 하며 통제권을 회수하려는 것이다. 그러면 원 프로젝트는 개발자와 사용자를 잃고, 포크는 다시 구현하느라 자원을 낭비한다. 결국 둘 다 망한다.
리눅스는 기술이 없어서 문제가 아니다.
멀쩡한 기술이 있어도 라이선스, 정치, 주도권 싸움으로 갈라놓고, 몇 년 뒤 새로운 계층을 하나 더 얹어 문제를 해결했다고 선언하는 문화가 문제다.
그리고 그 결과가 PulseAudio다.
한 코어를 100% 태우고 코어 덤프를 계속 만들면서, 지우려고 하면 웹브라우저와 오피스까지 같이 끌고 나가는 사운드 데몬.
이 정도면 오디오 서버가 아니라 인질범 아닌가. ㅋㅋ
소프트웨어도 아주 개븅신 같이 만들어놓고 말아.
100.83% ㅎㅎ pulseaudio
ㅋㅋ
웹 브라우저에서 한글 타이핑하는데 개버벅 거리길래 확인해보니.
저렇더라.ㅎㅎ
진지하게 묻는다.
리눅스 왜 쓰냐?
개븅신 운영체제 지옥에나 떨어져라
이 댓글은 게시물 작성자가 삭제하였습니다.
오 점마들 다 뭐하는 샊이들인지 궁금했었는데 정리 ㄱㅅ
운전면허는 왜 안따냐?
네, 정확히 짚으셨습니다. PulseAudio의 CPU 100% 폭주는 특정 환경에서 발생하는 구조적 설계 한계와 고질적인 특성이 맞습니다. 사운드 카드가 나빠서가 아니라, PulseAudio가 내부적으로 오디오를 처리하는 방식 때문에 발생하는 데 대표적인 원인 3가지는 다음과 같습니다. 1. 타이머 기반 스케줄링 (tsched)의 한계원리: PulseAudio는 CPU 효율을 높이기 위해 하드웨어 타이머를 기반으로 오디오 버퍼를 채우는 방식을 씁니다. (tsched=1 기본값)문제점: ALSA나 하드웨어가 이 타이머 신호를 정확하게 처리하지 못하면, PulseAudio는 오디오 싱크를 맞추기 위해 무한 루프를 돌며 CPU에 연산 요청을 퍼붓습니다.
이 과정에서 CPU 점유율이 100%로 치솟습니다.
2. 샘플링 레이트 변환 지옥 원리: 유튜브(44.1kHz), 동영상 파일(48kHz), 시스템 알림음 등 앱마다 오디오 주파수가 다릅니다. PulseAudio는 이를 하나의 주파수로 섞어서 출력해야 합니다. 문제점: 하드웨어가 지원하지 않는 주파수를 억지로 맞추거나 고품질 리샘플링 알고리즘이 꼬이면, 오디오를 실시간으로 변환하는 과정에서 CPU 연산량이 급증합니다.
윈도우/맥이나 PipeWire는 왜 안 그럴까? 윈도우/맥: 하드웨어 제조사들이 OS 전용 드라이버를 검증해서 제공하므로 OS 오디오 엔진과 삐걱거릴 일이 적습니다. PipeWire: PulseAudio의 이 '타이머 기반 버그'와 구조적 결함을 목격하고 만든 최신 오디오 서버입니다. 아예 설계 단계부터 멀티미디어 전문 프레임워크 구조를 채택하여, 오디오 버퍼가 꼬여도 CPU를 100% 빨아먹는 무한 루프에 빠지지 않도록 방어 코드가 강력하게 짜여 있습니다.
그니까.. 리눅스도 freebsd처럼 oss 사용하면 되는걸, 우엑 ㅄ짓을 수십년을 해온거냐고. ㅎㅎ 오죽하면 freebsd에서 리눅스 앱 때문에 pulse 사용해야될까. 이참에 pipewire로 교체하긴 했지만 ㅄ같은건 pipewire도 마찬가지임. ㅎㅎ 리눅스도 걍 freebsd처럼 oss 사용하면 이 ㅄ짓 안 해도 되는데 리눅스는 참 문제야. ㅎㅎ
systemctl --user status pipewire-pulse 해봐봐 active 상태 맞음?? pipewire 가 펄스오디오 가로채서 cpu 100% 버그에 안빠지게 한다는데
우분투에서 PipeWire가 오디오 처리를 완전히 담당하는 기본(Default) 사운드 서버로 바뀐 것은 우분투 22.10 버전(Kinetic Kudu, 2022년 10월 출시)부터입니다 루비님아 우분투 구버전 쓰는듯 ? 우분투 22.10 (2022년 10월): + PipeWire 공식 기본 채택이 버전부터 오리지널 PulseAudio 데몬이 완전히 은퇴했습니다.오디오와 비디오 모두 PipeWire가 메인 엔진이 되었고, pipewire-pulse 호환 레이어가 기본 탑재되었습니다
난 24.04 쓰고있어서 루비가 겪은 버그 발생안함
내 생각에 루비는 리눅스 구형이거나 프리 BSD 에 크롬쓰느라 PipeWire 가 없어서 구형 펄스오디오api ㅈ버그 걸려서 고생중인거 같음
나님 freebsd 씀. freebsd에는 oss가 있음. 하지만 리눅스 앱들이 pulseaudio 요구하므로 oss --> pulseaudio 이런 식으로 처리가 되지. ㅎㅎ 암튼 pulseaudio disable시키고 pipewire 사용하도록 변경했음. 내 요지는, oss 써도 되는데 리눅스용 래퍼를 하나 더 통과해야 한다는 걸 말함.
형님 ㅠㅠ
리눅스가 아니라 C/C++이 원인
오픈소스면 alsa포크가 나오는게 정상일텐데