chrt fikk en patch for å kunne ta trådene og ikke bare hovedprosessen nå i mai (med parameteren -t), men dette er ikke støttet i Wheezy, og jeg vet ikke en gang om det er offisielt.
Det ble i stedet til at jeg gjorde det ordentlig med rt patchen til mpd, men "The Debian Way" for å sikre en mest mulig lettsmurt prosess ved neste korsvei.
I praksis benyttet jeg apt-get til å laste ned source for mpd 0.17.1 fra Debian Sid. Denne kildekoden patchet jeg med real time patchen, samt at jeg endret debian/rules slik at jeg fikk med --enable-rtopt. Deretter kjørte jeg litt debian magi på dette og ut fikk jeg en portabel .deb fil for amd64 bit med real time støtte, helt 100% integrert med Debian som om pakken var installert på vanlig vis (oppstartsskript, filbaner, pakkehåndtering osv). Dette gjør at jeg slipper å dille mer med dette når jeg skal installere en helt clean maskin i neste runde.
Etterpå la jeg selvsagt til realtime-konfigurasjonen i mpd.conf.
Verdt å merke seg er at det så vidt jeg har skjønt kun er prioritet 99 som er rt (det ser man også om man ser på "top"). Jeg valgte derfor å gå for 99 på audio_output FIFO-delen, samt IRQ prosessene.
Siden kernelen i Wheezy (3.2.21-3 per dags dato) har støtte for "threadirqs" uten å måtte ty til rt-kernelen, er det ikke noen rene tekniske årsaker til å måtte kjøre rt-kernelen lenger, slik som i Squeeze. threadirqs er det som muliggjør individuell prioritering på prosessen tilknyttet hver IRQ, for den uinnvidde.
Personlig synes jeg det hadde vært fint å slippe å dra inn rt-kernelen, fordi den alltid har mer usikkerhet ved seg enn standardkernelen. Men jeg er nødt til å kjøre noen sammenligninger med og uten rt-kernelen, med ellers identisk oppsett på prioritering osv. Jeg mistenker at rt-kernelen med rt-patchet mpd kommer til å komme seirende ut etter noen særdeles lite relevante og hurtige sammenligninger i dag.
Oppsettet jeg kjører nå har kun native Wheezy pakker med unntak av rt-patchet Debian Sid mpd 0.17.1, og kjører ellers rt kernel fra Wheezy repositoryet med threadirqs og følgende ekstra innstillinger i form av et script jeg kjører via rc.local ved opppstart (jeg scripter alltid på engelsk, men det går vel bra):
Kode:
#!/bin/bash
SCALING_GOVERNOR="performance"
USB_IRQ_THREAD="23-ehci_hcd"
PRI_IRQ=99
SWAPPINESS=10
# Changing the scaling_governor
for CPU in {0..3}; do
echo $SCALING_GOVERNOR > /sys/devices/system/cpu/cpu${CPU}/cpufreq/scaling_governor
echo "scaling_governor is set to $(cat /sys/devices/system/cpu/cpu${CPU}/cpufreq/scaling_governor) for CPU${CPU}"
done
# Printing the value of nrpacks just for reference
echo "snd-usb-audio nrpacks is $(cat /sys/module/snd_usb_audio/parameters/nrpacks)"
# Changing the priority of the USB IRQ thread (threadirqs needs to be activated for the kernel in grub)
pgrep $USB_IRQ_THREAD | xargs -n 1 chrt -f -p $PRI_IRQ
# Changing the priority of ksoftirqd
pgrep ksoftirqd | xargs -n 1 chrt -f -p $PRI_IRQ
# Make linux wait longer before swapping memory
echo $SWAPPINESS > /proc/sys/vm/swappiness
echo "/proc/sys/vm/swappiness is set to $(cat /proc/sys/vm/swappiness)"
Dette scriptet representerer ikke på noe vis noen fasit for optimal lyd, men inneholder det jeg har funnet som virker å være mest relevant og det er mer et slags utgangspunkt for videre sjekk og tuning av de viktigste tingene.
Det ligger masse andre tweaks ute på nett, men flere av dem bærer preg av manglende forståelse og at de er samlet inn fra ulike kilder med litt andre hensikter enn mpd-avspilling. I tillegg har jeg utelatt mer "tvilsomme" ting som kanskje/kanskje ikke har noe å si, som da IMO vanligvis står best urørt.
Et annet klassisk eksempel på noe som mer eller mindre alltid er nevnt, men som jeg ikke kan finne noe bruksområde for i mitt system er dette:
Kode:
Limits
-------
Dette ser ikke ut til å være nødvendig, siden MPD-trådene ser ut til å få akkurat den prioriteten de er konfigurert med i /etc/mpd.conf når jeg sjekker med "ps -eLo pid,cls,rtprio,pri,nice,cmd | grep mpd"
Dette står derfor kun her som en referanse. Forfatteren av rt patchen for mpd sier også at han ikke gjør noen sjekk mot limits.conf og mpd er ikke en gang medlem av grupppen audio, noe mange MPD-tweakere på nett ser ut til å overse helt.
-> vi /etc/security/limits.conf
-
@audio - rtprio 99
@audio - memlock unlimited
@audio - nice -19
-
Hvis jeg aktiverer konfigurasjonen ovenfor må jeg melde mpd inn i audio-gruppen (grupper symboliseres med @) om det skal gi mening.
-> adduser mpd audio
Selve Debian-installasjonen er en helt minimal netinst, med noen få pakker ekstra installert for å kunne bruke systemet bedre.
Jeg har også satt opp en versjon som inkluderer en minimal Debian-versjon av gnome-shell som fungerer flytende med mitt H77-baserte hovekort.
GUIet hadde ikke en gang nettleser, terminal eller editor installert før jeg la dem til.
Hovedhensikten med GUIet er rett og slett at man da kan kjøre Linux-klienten for Spotify direkte som på Windows og ikke minst ha en nettleser for surfing og nettstreaming, noe som jo kan gi vesentlig merverdi til maskinen avhengig av hvordan den kobles opp.
Jeg kommer nok til å kjøre uten GUI selv, men skal ta noen uhøytidlige lyttetester. En kjapp "ps -ef | wc -l" indikerte at det dukket opp 28 nye prosesser med GUIet oppe kontra CLI alene.
Som en kommentar til dette må jeg si at gnome-shell på Debian Wheezy ser ut til å bli virkelig bra. Grafikken de har valgt for Wheezy ser også meget stilren og profesjonell ut IMO.
Jeg dokumenterer forøvrig hva jeg driver med underveis. Legger det opp på wikien min etterhvert, for enklere vedlikehold.