RealtimeKit

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 🙂

żadnych reklam, sama wiedza.

Zarejestruj się na BEZPŁATNY NEWSLETTER i raz w tygodniu otrzymuj najważniejsze wiadmości
ze świata IT, nowych technologii i kryptowalut.

Bez reklam.

  1. Awatar gothmori
    gothmori

    OSS?

    1. Awatar whogivesaflyingsh
      whogivesaflyingsh

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

      1. Awatar gothmori
        gothmori

        zatem chodzi o JACK tak? ;>

      2. Awatar gothmori
        gothmori

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

      3. Awatar Sławek
        Sławek

        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.

        1. Awatar Paweł Ciupak
          Paweł Ciupak

          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.

        2. Awatar Swift Geek
          Swift Geek

          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 ;]

  2. Awatar Sławek
    Sławek

    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.

    1. Awatar Sławek
      Sławek

      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.

  3. Awatar Sławek
    Sławek

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

  4. Awatar Sławek
    Sławek

    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.

  5. Awatar norbert_ramzes
    norbert_ramzes

    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…

    1. Awatar Sławek
      Sławek

      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.

      1. Awatar stilgar
        stilgar

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

        1. Awatar Sławek
          Sławek

          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ę.

        2. Awatar whogivesaflyingsh
          whogivesaflyingsh

          "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 🙂

    2. Awatar whogivesaflyingsh
      whogivesaflyingsh

      "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ą…

      1. Awatar norbert_ramzes
        norbert_ramzes

        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.

        1. Awatar whogivesaflyingsh
          whogivesaflyingsh

          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)

        2. Awatar norbert_ramzes
          norbert_ramzes

          nie ma wystarczającej kontroli

          A w innych dystrybucjach albo w MS jest inaczej?

        3. Awatar ak47
          ak47

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

        4. Awatar kj
          kj

          @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ę")?

        5. Awatar norbert_ramzes
          norbert_ramzes

          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.

        6. Awatar pdemb
          pdemb

          @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.

        7. Awatar kj
          kj

          @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.

      2. Awatar AdamK
        AdamK

        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

        1. Awatar moloh
          moloh

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

        2. Awatar krzychoocpp
          krzychoocpp

          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-de…

  6. Awatar hering
    hering

    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.

    1. Awatar Sławek
      Sławek

      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 .

    2. Awatar Sławek
      Sławek

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

    3. Awatar Maciej Piechotka
      Maciej Piechotka

      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…

  7. Awatar jarek
    jarek

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

  8. Awatar pjure efil
    pjure efil

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

  9. Awatar tanyue123
    tanyue123

    CCTV Security Systems the owner should see to it that the camera he is about to use and is currently using. The features that follow are those that can be controlled remotely and can be connected to a computer. They can be activated even if control area is not so near to the camera. All you need is an internet access that can throw a high speed access so that you can view the happenings and the activities even if you are away from home.
    8 Channel Security DVR
    Outdoor Surveillance Cameras
    Indoor Surveillance Cameras
    4 Camera DVR Security System
    IP Surveillance Systems

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *