22

RealtimeKit

3 lipca 2009, whogivesaflyingsh

Lennart Poettering, deweloper który popełnił PulseAudio, wpadł na pomysł rozwiązania problemu przerw w dostawie dźwięku do karty w Linuksie.

Problem ten jest szeroko znany użytkownikom Linuksa – pojawia się, gdy w systemie pracuje kilka programów i jednocześnie odtwarzana jest muzyka. Wtedy jeśli odtwarzacz nie ma określonego odpowiednio niskiego poziomu nice, mogą się pojawić przerwy w dostawie materiału grającego do karty dźwiękowej.

Popularnym rozwiązaniem tego problemu jest ustawienie odpowiednio niskiego poziomu nice dla procesu odtwarzacza. Jednak, żeby ustawić bardzo niski poziom nice, trzeba użyć konta administratora i wydać dwa polecenia – mało wygodne, jeśli często wyłącza się odtwarzacz lub używa różnych programów (kiedyś dało się zautomatyzować). Lennart zaproponował trochę inne rozwiązanie – zmianę polityki szeregowania dla wybranych procesów na SCHED_RR używaną dla programów ograniczonych czasowo (RT).

To rozwiązanie ma oczywiście jedną dużą wadę – jeśli taki program przestanie poprawnie działać, to bardzo trudno będzie go zabić. Uważni czytelnicy pewnie zauważą – zaraz, ale przecież to już było! Faktycznie, ale tym razem problem rozwiązuje Lennart Poettering, deweloper PulseAudio, a jego nowe dzieło nazywa się RealtimeKit :)

Więcej informacji: http://git.0pointer.de/?p=rtkit.git
Jeśli uważasz, że ten nius jest nieobiektywny, przedstawia nieprawdziwe wydarzenie, jest spamem lub nie spełnia standardów serwisu, napisz raport.

Komentarze (RSS)


Komentarze są prywatnymi opiniami dodających je osób. Prosimy o zachowanie kultury wypowiedzi. Komentarze obraźliwe oraz obniżające poziom serwisu będą usuwane. Więcej w regulaminie komentowania.

Liczba komentarzy: 34

zwiń wątek gothmori  3 lipca 2009 o godz. 15:10 #
zwiń wątek whogivesaflyingsh  3 lipca 2009 o godz. 15:17 #

ALSA czy OSS tu nic do tego nie mają – chodzi tylko o przestrzeń użyszkodnika.

zwiń wątek gothmori  3 lipca 2009 o godz. 15:31 #

zatem chodzi o JACK tak? ;>

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
 
zwiń wątek gothmori  3 lipca 2009 o godz. 15:33 #

ale w sumie… fajnie, że pulse audio się rozwija tak czy inaczej i że autor niesie dobrą nowinę :)

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
 
zwiń wątek Sławek  3 lipca 2009 o godz. 15:50 #

Najbardziej mnie denerwują ludzie twierdzący, że PulseAudio, to sterownik dźwięku(odpowiednik ALSA).

PulseAudio jest właśnie czymś w stylu esd, artsd, jack. Jest to serwer dźwięku. Nie wiem dlaczego zdobył on taką popularność. Więcej dla dźwięku pod Linuksem zrobili twórcy KDE niż autorzy PulseAudio.

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
zwiń wątek Paweł Ciupak  3 lipca 2009 o godz. 17:32 #

Fakt. Twórcy KDE wywalili swój zabugowany, nikomu niepotrzebny serwer dźwięku (aRts), a twórcy PulseAudio… właśnie takie coś stworzyli – także zabugowane i nikomu niepotrzebne.

 
zwiń wątek Swift Geek  4 lipca 2009 o godz. 13:23 #

Mi się przydaje… A jak kto chce FullAutomat to jest EarCandy – moich wymagań jeszcze nie spełnia ale kto wie może za parę lat ;]

 
 
 
 
zwiń wątek Sławek  3 lipca 2009 o godz. 15:25 #

Jeżeli, to co autor napisał jest prawdą, to bardzo dobry news! Widać, że ban się przydał ;-) ! O realtimekit słyszałem już wcześniej. Ma być połączony z PolicyKit. Trzeba jednak zdefiniować dwa poziomy nice: standardowy użytkownika, jak również wyższy od niego(jeżeli PolicyKit by na to pozwalał). Przypisanie poziomu wyższego od domyślnego wymagałoby podania tylko hasła użytkownika. Podania poziomu nice ujemnego wymagałoby już podania hasła root-a. To są tylko moje fantazje, ale mogą okazać się prawdą. Sesja przy starcie automatycznie podwyższałaby sobie nice.

zwiń wątek Sławek  3 lipca 2009 o godz. 15:33 #

Chodziło o standardowy nice, jak również ujemy(napisałem: wyższy). Program działający o podwyższonym nice miałby dwie drogi do jego zmniejszenia – poprosić użytkownika, poprosić administratora.

 
 
zwiń wątek Sławek  3 lipca 2009 o godz. 15:26 #

“popełnił PulseAudio”
Bardzo dobre sformułowanie, proszę jednak umieszczać własne zdanie w komentarzu.

 
zwiń wątek Sławek  3 lipca 2009 o godz. 15:29 #

Sprawa faktycznie działa. Moduły do pracy w trybie RT chyba nazywane są modułami Curtz-a.
PS: Nie wystarczy wykonać renice na wyższych uprawnieniach?
PS2: Przecież, jak program działa w RT w określonym przedziale czasu, to jego popsucie nie powinno wpłynąć na pracę systemu. Przecież po wyczerpaniu się limitu czasu sterowanie znowu przejmuje jądro, które przydziela czas kolejnemu procesowi.

 
zwiń wątek norbert_ramzes  3 lipca 2009 o godz. 15:34 #

Problem ten jest szeroko znany użytkownikom Linuksa – pojawia się, gdy w systemie pracuje kilka programów i jednocześnie odtwarzana jest muzyka.

Hmm? Ileś lat używam Debiana, prawie zawsze mam odpalone kilka, kilkanaście (czasami nawet kilkadziesiąt) programów użytkowych korzystające z GTK, QT czy innych bibliotek i nie przypominam sobie żebym musiał często używać renice. Bywało u mnie tak że jakiś soft obciążał tak cpu że nawet kursor stawał a muzyka spokojnie sobie grała. Miewałem tak dopiero jak kilka programów (np. domowej roboty) zapętlało się bez celu i bez wywołania usleep().

W normalnej sytuacji, soft który nic nie robi (np. krusader który używam codziennie) zajmuje 0.0% czasu CPU. Co innego gdybym to samo oprogramowanie używał na np. 486…

zwiń wątek Sławek  3 lipca 2009 o godz. 15:48 #

Z tym zapętlaniem, to już przeszłość. Obecnie wszystkie procesy dostają procesora po równo, a nie wg. zapotrzebowania. Przynajmniej system Ci nie obciąży się zbyt mocno.

zwiń wątek stilgar  3 lipca 2009 o godz. 16:58 #

serio? po równo? to dość… nieoptymalnie.

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
zwiń wątek Sławek  3 lipca 2009 o godz. 17:34 #

Jest to dosyć nieoptymalne, ale kod nowego sheludera jest szybszy, a poza tym czemu jakieś zadanie miałoby móc wziąć zbyt wiele czasu procesora. Oczywiście w przypadku, gdy jakiś proces czeka, to nie jest brany pod uwagę.

 
zwiń wątek whogivesaflyingsh  3 lipca 2009 o godz. 17:51 #

“Jest to dosyć nieoptymalne, ale kod nowego sheludera jest szybszy, a poza tym czemu jakieś zadanie miałoby móc wziąć zbyt wiele czasu procesora. Oczywiście w przypadku, gdy jakiś proces czeka, to nie jest brany pod uwagę.”

Nie wiem o czym mówisz, ale chyba nie o CFS :)

 
 
 
zwiń wątek whogivesaflyingsh  3 lipca 2009 o godz. 17:56 #

“Ileś lat używam Debiana”

O, to pewnie dla tego. U mnie nie działało (i u kilku procent użytkowników niezadowolonych z poziomu podsystemów audio w Linuksie) bo używałem innej dystrybucji. W Debianie to cały kernel jest przepisany tak, żeby działał :)

P.S. Debiana kiedyś przez jakiś czas używałem – dawno temu i nie prawda ;) . Nie mam zamiaru już nigdy nigdzie go używać, gdy się dowiedziałem, że jego deweloperzy robią poprawki do kodu, którego nie rozumieją…

zwiń wątek norbert_ramzes  3 lipca 2009 o godz. 18:10 #

jego deweloperzy robią poprawki do kodu, którego nie rozumieją…

Jak pracuje się nad dużym projektem który pisał ktoś inny to coś takiego jest normalne. Sam tak robię.

Chcesz zrobić poprawkę albo ulepszyć kod czegoś co źródła zajmują 10MiB albo więcej to albo czytasz całość/prawie całość, albo czytasz mały fragment żeby jako tako zrozumieć i ten fragment poprawić.

Np. spróbuj dodać mgłę do Nexuiza 2.4.2 (po stronie serwera) bez możliwości zmiany przez konkretnego usera, ale z możliwością głosowania. Mnie to zajęło jakieś dwa tygodnie bez zbytniego wgłębiania się w szczegóły (np. jak działają funkcje z których korzystam [ile osób wie jak dokładnie działa printf?]). Gdybym miał zagłębiać wszystkie tajniki to zeszłoby mi ze 5 lat a nie 2 tygodnie.

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
zwiń wątek whogivesaflyingsh  3 lipca 2009 o godz. 20:43 #

Nie o to mi chodzi. Nie do tego piję :)

Chodziło mi o tą słynną poprawkę do OpenSSL. Gość nie rozumiejąc kodu zrobił “poprawkę” (wyrzucił jedną linijkę kodu czy coś w tym stylu) na jakiś ezoteryczny problem wykryty za pomocą valgrinda.

Zdaję sobie sprawę z tego, że w żadnej dystrybucji Linuksa nie ma wystarczającej kontroli nad tym jakie poprawki deweloperzy wrzucają do pakietów – każdy niekompetentny koleś może wrzucać wszystko co mu się podoba, bo jest opiekunem pakietu, deweloperem Debiana, panem i władcą na krańcu świata. Jednak w mojej skromnej opinii poziom niekompetencji i zadufania u deweloperów Debiana jest na tyle wysoki, że nie warto poświęcać czasu na walkę z nimi i tym systemem.

(Debian nie jest pierwszym systemem na mojej liście – nie warto na to tracić czasu – pierwszy jest oczywiście Gentoo – –enable-jestem-szybki-jak-Kubica-intel7)

 
zwiń wątek norbert_ramzes  3 lipca 2009 o godz. 22:10 #

nie ma wystarczającej kontroli

A w innych dystrybucjach albo w MS jest inaczej?

 
zwiń wątek ak47  4 lipca 2009 o godz. 7:55 #

Te mistrzu .
w GENTOO kompiluje UŻYTKOWNIK nie developer. Zrozumiałeś? UŻYTKOWNIK

 
zwiń wątek kj  4 lipca 2009 o godz. 13:14 #

@whogivesaflyingsh: mówisz o fragmencie kodu, który pobierał losowe dane z niezainicjalizowanej zmiennej? Z punktu widzenia teorii programowania developer Debiana postąpił słusznie, inna sprawa, że akurat twórca OpenSSL chciał w ten sposób liczby losować ;].

@norbert_ramzes: dlaczego odnosisz problem braku kontroli nad aplikacjami wchodzącymi w skład dystrybucji do MS? MS zdaje się robi system operacyjny, a nie kompletną dystrybucję z masą programów (przynajmniej często słychać argument pt. “z Windowsem nic nie dostaję”)?

 
zwiń wątek norbert_ramzes  4 lipca 2009 o godz. 16:30 #

dlaczego odnosisz problem braku kontroli nad aplikacjami wchodzącymi w skład dystrybucji do MS?

Chodziło mi o to że brak kontroli może występować wszędzie indziej.

 
zwiń wątek pdemb  4 lipca 2009 o godz. 22:21 #

@whogivesaflyingsh: mówisz o fragmencie kodu, który pobierał losowe dane z niezainicjalizowanej zmiennej? Z punktu widzenia teorii programowania developer Debiana postąpił słusznie, inna sprawa, że akurat twórca OpenSSL chciał w ten sposób liczby losować ;].

To jest poleganie na niezdefiniowanym przez specyfikację języka programowania zachowaniu kompilatora. Z tego co piszesz wynika, że ten developer OpenSSL to ryzykant. W sumie dziwne jak na programistę od szyfrów.

 
zwiń wątek kj  5 lipca 2009 o godz. 12:06 #

@pdemb: Niezdefiniowane zachowanie kompilatora? A co tutaj jest niezdefiniowanego? Po kolei: kompilator przydziela fragment pamięci na daną zmienną i nie wpisuje pod jej adres żadnych danych. Od strony kompilatora wszystko jest jasne. Moim zdaniem niezdefiniowana jest tylko i wyłącznie zawartość zmiennej ;) . Ryzyko polega głównie na tym, że dana pamięć będzie np. wyzerowana (bo akurat program dostał wyzerowany obszar) i nie będzie robiła za dobre źródło losowe.

 
 
zwiń wątek AdamK  4 lipca 2009 o godz. 8:42 #

To nie bya wina developera Debiana (w sensie zmiany kodu). To co wykorzystywalo OpenSSL, to trick, ktory w 99.999% wypdkow jest powaznym bledem popelnionym przez programiste, wiec wykozystanie takiego tricku powinno byc dokladnie obkomentowane przez autora. Nie bylo – i to byl blad developerow OpenSSL.

Blad developera Debiana polegal na tym ze nie zglosil ‘poprawki’ do autorow OpenSSL – wowczas mogloby to wygladac zupelnie inaczej

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
zwiń wątek moloh  5 lipca 2009 o godz. 4:07 #

Oczywiście że poprawka była zgłoszona na liście OpenSSL, tylko nie tej co deweloperzy czytają…

 
zwiń wątek krzychoocpp  5 lipca 2009 o godz. 15:37 #

To też nie do końca tak. Developer nie wiedział do końca o co chodzi, spytał się na odpowiedniej liście (nie do końca szczegółowo) i dostał odpowiedź że proponowane zmiany nie spowodują problemów. http://research.swtch.com/2008/05/lessons-from-debianopenssl-fiasco.html

 
 
 
 
zwiń wątek hering  4 lipca 2009 o godz. 9:56 #

Mam same problemy z tym pulseaudio. Ustawienie nagrywania dźwięku dla skype to koszmar bo oczywiście po instalacji nie jest prawidłowo ustawione (Ubuntu/Mint). Jak miałem dystrybucję z samą Alsą to wszystko było super.

zwiń wątek Sławek  4 lipca 2009 o godz. 10:29 #

Obecnie też z PA nie ma problemów większych. Ostatnio na niego psioczyłem, bo miałem ustawiony master na full, a PCM na wyciszenie. Zrobiłem to celowo, bo chciałem zobaczyć, jaki będzie tego efekt w grach pod WINE. Potem jednak wyleciało mi to z głowy. By naprawić problem zdowngratowałem nawet PA do starszej wersji.

Wszystko jednak działa. PA może być tak skonfigurowane, że aplikacje ALSY korzystają z niego. Może Ubuntu ma z tym jakieś problemy? Znasz jeszcze jakieś inne aplikacje z tym problemem? Nie ma konta na Skype, a poza tym nie chce mi się tego instalować.
Moje PA, to 0.9.14 .

 
zwiń wątek Sławek  4 lipca 2009 o godz. 10:29 #

W każdym razie PA miało spore problemy, i pewnie nadal ma. Można jednak z niego korzystać przy obecnej wersji.

 
zwiń wątek Maciej Piechotka  4 lipca 2009 o godz. 15:53 #

Z tego co wiem to Skype ma swoje założenia dotyczące API Alsy a PA implementuje to domyślnie z jakiś powodów inaczej. Przynajmniej PA tak twierdzi…

 
 
zwiń wątek jarek  5 lipca 2009 o godz. 10:36 #

Podrecznikowy przyklad rozwiazania w stylu: nic na sile, wszystko mlotkiem.

 
zwiń wątek pjure efil  5 lipca 2009 o godz. 14:29 #

można użyc po prostu demona verynice który automatycznie ustawi odpowiedni poziom nice dla odpowiednich aplikacji.

 
Identyfikator (wymagane)
Adres e-mail (wymagany - nie pokażemy go publicznie)
Adres URI
Rozmiar pola: zmniejsz rozmiar | zwiększ rozmiar
Uwaga! Niektóre komentarze, m.in. te dodane przez niezalogowanych i nowych użytkowników, są ręcznie moderowane. Jeśli Twój komentarz nie ukaże się od razu, nie dodawaj go ponownie, tylko cierpliwie poczekaj na akceptację.
W komentarzach możesz używać prostych znaczników HTML. Przykłady:
  • Link: <a href="jaklinux.org">Linux dla każdego</a>,
  • Wytłuszczenie: <strong>tekst pogrubiony</strong>,
  • Kursywa: <em>tekst pochylony</em>,
  • Przekreślenie: <strike>tekst przekreślony</strike>,
  • Kod: <code>printf("blok kodu");</code>,
  • Cytat: <blockquote>cytat</blockquote>
Uwaga: jeśli dodasz nieznany znacznik, będzie on niewidoczny, gdyż system filtruje takie znaczniki.

CC BY

Wszystkie autorskie niusy w serwisie publikowane są na licencji Creative Commons Uznanie autorstwa 2.5 Polska. Uwaga, jeśli nius jest skopiowany z innej strony, kopiując go należy podać link również do tej strony!