Xrun --- Anteeksi en ehtinyt !
Itselläni myös Natty Studio (11.04) ja koneena Fujitsu Siemens Pi-jotain mallinen pöytäkone. Oma kokemukseni oli että tuon paketin vakioytimellä asennuksen jälkeen nuo xrunit hyppivät tiuhaan. Vaihdoin ytimen tuohon "low-latency" malliseksi ja tuo asia tuli hallintaan. On äänitelty lukuisasti kappaleita Ardourilla tuon jälkeen. Muilla tuo voi olla toisin (=vakio ydin riittää) mutta tuo vaatinee aika pitkän selityksen.
Näistä ytimistä (=kernel) on ollut monia keskusteluja ja toiset tulevat toimeen vakioytimellä. Mistä tässä sitten on oikeastaan kysymys ja mikä vaikuttaa mihin ?
Itse näkisin koko sopan karkeana rautalankamallina teknisesti näin:
Voidaan ajatella noin yleisellä tasolla että meillä on jokin rajallinen "aikabubjetti". Meidän ei tarvitse keksiä mitään tarkkaa lukua tuohon vaan ajatellaan asian mallintamiseksi jotenkin että meillä on rajallinen aika jossa halutut tiedonsiirto- ja laskentaoperaatiot pitää saada tehdyksi. Jos olemme nopeampia kuin tuo vaatimus niin jää aikaa lepäilläkin välillä, jos olemme hitaampia ehdimme hoitaa ehkä "joka toisen tehtävän". Näin siis tietokoneen näkökulmasta.
Mikä sitten vaikuttaa ehdimmekö ? Tuota voi lähestyä monelta suunnalta. Yksi on raa'n voiman lähestymistapa, rautaan tehoa niin että riittää "mihin vain". Hyvä tapa jos taloudellisesti mahdollista. Toinen tapa lähestyä on miettiä sitä mihin ja miten kone kuluttaa aikansa: RT- ja low-latency ytimet ottavat tämän lähestymistavan. Vakioydin ei (ainakaan aiemmin) ole niin paljon välittänyt miten paljon tehtävien suoritukseen menevä aika vaihtelee vaan tavoitteena on ollut jonkinlainen kokonaistehokkuus. Tällöin tehtävän suoritukseen kuluva aika voi vaihdella huomattavasti. Tuo soveltuu huonosti tarkoitukseen jossa "satavarmasti" pitäisi suorittaa asia *aina* rajatussa ajassa. Äänitys on yksi esimerkki tuosta, automaatio ja robotiikka hyviä muita esimerkkejä. Avainsana on tuo *aina*, RT- ja low-latency pyrkivät tuohon. RT sillä tasolla että kaikki muu on toissijaista, low-latency niin että muitakin hyödyllisiä ominaisuuksia voidaan säästää / pitää mukana.
Tilanne elää:
Näitä "aikabudjetti" -ominaisuuksia, kutsuttakoon nyt tässä yhteydessä"rt-ominaisuuksia" on tuotu vaiheittain yhä enemmän mukaan vakioytimiin. Näistä on olemassa taulukko josta näkee mikä osa-alue on jo tuotu mukaan vakioytimeen eri ydinversioissa:
https://www.osadl.org/Realtime-Linux.projects-realtime-linux.0.htmlTämän vuoksi se mikä oli tilanne jonkin aikaa sitten voi olla aika nopeasti historiaa. Vakioytimet pystyvät yhä enemmän lyhyitä viiveitä vaativiin tehtäviin. Samaa edesauttaa konetehojen kasvu.
Laastaria kadotetulle datalle ("xrun"):
Tuo "xrun" on eräänlainen "Anteeksi, en ehtinyt" -viesti. Data menetettin kun ei joko päästy käsittelemään tai ehditty käsitellä sitä kyllin nopeasti. Apukeinona tuohon on käytetty datapuskuria eli tilapäistä varastointia josta data noukitaan käsittelyyn kun ehditään. Mitä pidempi varasto tehdään, sitä pidempiä odotuksia voidaan sietää ennen kuin dataa aletaan menettää. Vastaavasti mitä pidempi varasto, sitä pidempi on odotus eli viive ennen kuin data on valunut tuon varaston läpi ja tämä heijastuu suoraan myös käyttäjälle.
Asiaan vaikuttaa myös se mitä prosesseja pidetään ajossa samaan aikaan kun tehdään aikabudjetiltaan kriittisiä asioita ja erittäin paljon myös se millaiset etuoikeudet eri asioilla on annettu käyttää koneen aikaa ja miten pitkään ne varaavat / voivat varata keskusyksikköä itselleen. Tuo kokonaisuus ei ole aivan yksinkertainen.
Low-latency -ytimiä on kehitelty erityisesti ylipitkiä viiveitä välttelemään jollaisesta seuraa "xrun" eli datan menetys joka kuuluu häipymänä tai ilkeänä räsähdyksenä äänessä jos kuuntelua tehdään sillä hetkellä.
Joku voisi mallintaa ehkä hieman tarkemminkin tuota asiaa mutta yleinen idea lienee tuollainen ja auttaa ymmärtämään millaisia lääkkeitä voi etsiä kun kone sanoo "xrun = Anteeksi en ehtinyt !"
PS. Jälkiviisautena, itse ostaisin ensisijaisesti raakaa prosessointivoimaa (eli tehokas CPU) jos kone tulee musiikki- tai videotyöskentelyyn.