Old:ACPI e DSDT: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
m
Riga 1: Riga 1:
== Introduzione ==
=Dove=
Questa � una breve guida su come patchare un kernel 2.6 con la patch '''realtime-preemption''' di ''Ingo Molnar'' per ottenere un kernel a bassa latenza.
Il primo Debianizzati Day si svolger� a Piacenza, presso l'[http://www.isii.it/ I.S.I.I. G. Marconi] ([http://www.maporama.com/share/Map.asp?MapID=ECCD9B1B-2977-4402-9566-0C466CEADE56&language=It Dov'�])


Il kernel 2.6 ha raggiunto ormai delle prestazioni molto buone per quanto riguarda la latenza. Normalmente non � necessario usare nessuna patch aggiuntiva per applicazioni multimediali. Se per� si vogliono raggiungere prestazioni pi� spinte (come lavorare in full-duplex su diverse tracce a latenze inferiori a ~ 5 ms) � necessario usare la patch realtime-preemption.
===Trasporti===
� possibile raggiungere l'[http://www.isii.it/ I.S.I.I. G. Marconi] nei seguenti modi:
==== Macchina ====
Link per il calcolo del percorso:
* [http://www.maporama.com/share/DriveMe.asp?COUNTRYCODE=IT&State=&Zip=29100&_XgoGCTownName=PIACENZA&_XgoGCAddress=via+quattro+novembre+122&XgoPointXY=&AREACODE=IT&GO_DRIVEMETO.x=2&GO_DRIVEMETO.y=2 Maporama]
* [http://mappe.virgilio.it/tc/percorso/index.jsp?com2=piacenza+%28pc%29&to2=Via+Quattro+Novembre&civ2=12&v=2 Virgilio]
* [http://www.viamichelin.it/viamichelin/ita/dyn/controller/ItiWGHomePage?strDestCity=Piacenza&strDestCityCountry=612&strDestAddress=12,%20Via%204%20Novembre&strDestCP=29100 ViaMichelin]


Per chi non conoscesse il mondo dell'audio professionale su GNU/Linux consiglio questo magnifico sito introduttivo:
==== Passaggi ====
Io ([[Utente:MaXeR|MaXeR]]) partir� da Garda sul presto (__ora__) ed ho tre posti liberi in macchina. Per maggiori informazioni: [mailto:maxer@knio.it Scrivimi].


* [http://www.emillo.net/audio_midi emillo.net]
Io ([[Utente:ilbeppe|ilbeppe]]) parto da Milano la mattina presto (Orario da concordare), ho anche io 3 posti liberi. Per prendere accordi mandatemi un mail: [mailto:ilbeppe@tafferuglio.org Scrivimi]


La patch realtime-preemption (per quanto perfettamente usabile) continua ad essere sviluppata incessantemente, e le release sono spesso giornaliere. Il kernel a cui si applica la patch � sempre l'ultimo kernel stabile o, spesso, l'ultimo RC. Nella guida, a puro titolo esemplificativo, mi riferir� ad un kernel e ad una versione di patch specifica, anche se queste versioni diventeranno presto obsolete.  
Io ([[Utente:tindal|tindal]]) parto da Bologna in orario da concordare, ho anch'io 3 posti liberi. Tengo a precisare per� che, per quanto io tenga molto a venire, i miei programmi hanno una certa tendenza ad ingarbugliarsi e quindi a cambiare repentinamente, quindi non mi sento di garantire nulla. Per contatti: [mailto:tindal@debianizzati.org Scrivimi] oppure va bene anche un PM dal forum.


{{Warningbox|Se non siete a vostro completo agio a compilare e patchare il kernel questa non � la via che fa per voi. Consiglio, in tal caso, di usare un setup per l'audio professionale pronto per l'uso, installando l'ottima [http://demudi.agnula.org/ distribuzione DeMuDi] (� una [http://wiki.debian.net/index.cgi?CustomDebian CDD]). Se volete invece informazioni dettagliate su come compilare il kernel alla ''debian-way'': [[Debian Kernel Howto]]. }}
==== Treno ====
* Link al sito [http://orario.trenitalia.com/b2c/TimeTable?stazin=in&stazout=Piacenza&datag=25&datam=03&dataa=2006&timsh=07&timsm=00&lang=it&nreq=5&channel=tcom Trenitalia]


== Dal kernel stabile all'RC ==
==== Bus ====
Consiglio di compilare l'ultima versione stabile del kernel, configurandola e testandola fino ad ottenere una configurazione ben funzionante. Come spunto potete usare [[Esempio configurazione kernel|questa configurazione]]. Nel mio caso ho usato il kernel 2.6.13.2 e la [[Debian Kernel Howto|debian-way]] di compilare il kernel.
* Dalla stazione, si pu� prendere l'autobus numero 8 (vedi la pagina con [http://www.tempi.piacenza.it/trasporto_pubblico/orari/invernale/Linee%20urbane/per_linea/Linea_8.asp il percorso e gli orari])


La patch realtime-preemption pi� recente si applica solitamente ai kernel RC (Release Candidate). Questo perch� Ingo Molnar segue sempre il kernel pi� recente (quindi usa le RC come base di partenza per la sua patch). Quando viene rilasciato un nuovo kernel stabile Ingo Molnar rilascia pach per il nuovo kernel stabile, ma dopo alcune settimane passa nuovamente a seguire l'ultima RC uscita nel frattempo.  
=Quando=
La data scelta � Sabato 25 Marzo.


Quindi, si hanno due possibilit:
# compilare l'ultimo kernel stabile con l'ultima patch rilasciata per quel kernel
# compilare l'ultimo kernel rc e usare la versione corrente della pacth.


Attualmente l'ultimo kernel stabile, per il quale sia stata rilasciata la patch realtime preemption il [ftp://ftp.it.kernel.org/pub/linux/kernel/v2.6/linux-2.6.14.tar.bz2 2.6.14] (non i successivi 2.6.14.x). Per tale kernel l'ultima patch disponibile la [http://people.redhat.com/mingo/realtime-preempt/older/patch-2.6.14-rt22 2.6.14-rt22], come si pu vedere [http://people.redhat.com/mingo/realtime-preempt/older/ qui].


Se invece si vuole usare l'[http://people.redhat.com/mingo/realtime-preempt/ ultima patch] realtime-preemption (attualmente 2.6.15-rc5-rt2) bisogna usare anche l'[ftp://ftp.it.kernel.org/pub/linux/kernel/v2.6/testing/ ultimo kernel RC].
=Programma=
===Mattina===
* '''09:30''' Ritrovo presso __luogo__
* Saluti e presentazioni di Lug Piacenza e Debianizzati
* Talk: ''Introduzione a Linux''
* '''11:00''' Pausa Caff�/Sigaretta
* Talk: ''Introduzione a Debian''
* Talk: ''Debian: dpkg, apt-get e aptitude''
* Pausa Pranzo


Per passare da un kernel stabile ad un RC basta fare un <tt>make oldconfig</tt> in modo da configurare solo le nuove voci. Questo metodo "a due passi" permette di separare i problemi dovuti ad un eventuale errore di configurazione del kernel stabile dai problemi potenzialmente introdotti dall'uso di un kernel RC non stabile.
===Pomeriggio===
* '''14:30'''  Tc: no1984.org e proiezione del filmato "No al Trusted Computing"
* Installation Party
* '''17:00''' Termine Giornata


== La patch realtime-preemption ==
===Varie===
L'archivio delle patch realtime-premption si trova a [http://people.redhat.com/mingo/realtime-preempt/ questo indirizzo]. La patch realtime-preemption usata di seguito (a puro titolo esemplificativo) � la 2.6.14-rc5-rt5, voi usate la versione pi� recente disponibile. La patch � un semplice file di testo. Il suo nome � del tipo <tt>patch-''<kernel version>''-''<patch version>''</tt>. Bisogna applicare la patch all'esatta versione del kernel indicata dal nome. Di seguito viene usata la [http://people.redhat.com/mingo/realtime-preempt/older/patch-2.6.14-rc5-rt5 versione rt5 applicata al kernel 2.6.14-rc5]. Tenete presente che nuove versioni della patch vengono rilasciate giornalmente.
Durante le pause sar� possibile firmarsi le chiavi GnuPG, chiedere informazioni, chiaccherare, etc :-)


Per applicare la patch basta copiarla in <tt>/usr/src</tt>, entrare della dir del kernel e lanciare il comando, nel mio esempio:
=Per i Partecipanti=


  $ cat ../patch-2.6.14-rc3-rt2 | patch -p1 -t
==Iscrizione==
L'iscrizione all'evento non � obbligatoria, ma � utile agli organizzatori per valutare la partecipazione ed, eventualmente, adottare accorgimenti diversi in base al numero delle persone.


A questo punto nuovamente un <tt>make oldconfg</tt> ci permetter� di configurare le voci inserite dalla patch. Assicurarsi di scegliere '''Complete Preemption (Real-Time)''' in:
A [[Debianizzati Day 1: Iscrizioni | questa pagina]] � possibile iscriversi sia ai talk sia all'Installation Party (che per ovvi motivi organizzativi sono considerati come due ''entit�'' diverse).


<pre>
Processor type and features  --->
  Preemption Mode (Complete Preemption (Real-Time))
</pre>


per il resto ho lasciato tutte le altre nuove voci su NO (la maggior parte di esse serve, infatti, per attivare vari strumenti di debug).
==Materiale Disponibile==
===Documentazione===
* Copie Cartacee delle slide del talk ''Debian: dpkg, apt-get e aptitude''
* Debian Reference Card [http://people.debian.org/~debacle/refcard/ Link]


Non ci resta che compilare il kernel:
===Software===
* CD/DVD di Debian Sarge (per i386, amd64, ppc)
* CD/DVD di Debian Etch (per i386, amd64, ppc)
* CD/DVD di Ubuntu 5.10  (per i386, amd64, ppc)
* CD BarGnu [http://bargnu.lugpiacenza.org/ Link al Progetto]


  $ fakeroot make-kpkg --append-to-version -realtime --revision 0.1 kernel_image


ed installare il pacchetto, per ulteriori informazioni su questo passaggio: [[Debian Kernel Howto]].
==Installation Party==
Chi intende partecipare all'Installation Party deve munirsi delle seguenti cose:
* Computer (mouse, tastiera e monitor non sono necessari) con le seguenti caratteristiche:
** Presa di Rete
** Lettore cd o dvd
* Elenco Sommario dell'Hardware installato
* Pazienza ;-)


=Contatti=
* Claudio Moratti
** e-mail: [mailto:maxer@debianizzati.org maxer@debianizzati.org]
** Jabber: maxer@jabber.fsfe.org


== Modalit realtime e realtime scheduling ==


La modalit� realtime � un particolare privileggio di esecuzione che un'applicazione pu� avere . Questa modalit� permette ad una applicazione di avere accesso alla CPU con la massima priorita (rispetto ad ogni altra applicazione in attesa) ogni volta che venga richiesto, impedendo inoltre che un'altra applicazione possa a sua volta interrompere l'esecuzione (a meno che non sia anch'essa realtime).
=Ringraziamenti=
 
* Lug di Piacenza (in particolare Roberto Premoli e Marco Frattola)
Questo permette di tenere in esecuzione applicazioni a bassa latenza, senza il rischio che altre applicazioni non-realtime possano disturbarle. Si capisce come questa modalit� sia importantisissima nelle applicazioni audio professionali (ad esempio una sessione di registrazione non verr� mai interrotta anche se molte applicazioni non realtime saturano la CPU!).
 
D'altro canto, questa modalit�, pone dei seri problemi di sicurezza dato che un'applicazione potrebbe (a causa di un errore o di un comportamento malevolo) occupare la CPU per un tempo indefinito, senza poter essere interrrotta, impedendo dunque la normale applicazione degli altri programmi.
 
Normalemente, quindi, solo root ha i privileggi per lanciare applicazioni in modalit� realtime. Questo � un problema, dato che (ad esempio) Jack e tutte le applicazioni che vi si connettono dovrebbero essere lanciate da root per poter funzionare in modalit� realtime, e questo costituirebbe un ancor pi� grosso problema di sicurezza.
 
Per risolvere il problema bisogna consentire l'uso della modalit� realtime anche a normali utenti ma in maniera "controllata".
 
Attualmente esistono due approcci per raggiungere lo scopo:
 
# Usare il modulo <code>realtime-lsm</code>
# Usare gli '''rlimits'''
 
Entrambi gli approcci possono essere usati sia con kernel vanilla che con kernel realtime-preemption.
 
 
=== Il modulo <tt>realtime-lsm</tt> ===
Il modulo <code>realtime-lsm</code> permette ad un normale utente inserito nel gruppo <code>audio</code> di eseguire applicazioni in modalit� realtime. Questo � il vecchio approccio, che verr� man mano sostituito nelle varie distro dall'uso degli rlimits (vedi oltre). 
 
Su debian l'installazione del modulo � molto semplice: basta installare il pacchetto <code>realtime-lsm-source</code> ed usare <tt>[[Pagina di manuale di module-assistant|module-assistant]]</tt> per compilare e pacchettizzare il modulo.
 
In pratica, dopo aver fatto il boot del kernel per il quale si vuole installare il modulo, (e aver installato <code>realtime-lsm-source</code>) basta il seguente comando:
 
  $ m-a build realtime-lsm
 
per compilare e creare un pacchetto per il modulo. A questo punto non ci resta che installare il pacchetto <code>realtime-lsm</code> creato.
 
Questo modulo non � stato accettato (ne lo sar� mai) nel tree ufficiale del kernel per i potenziali problemi di sicurezza legati al suo utilizzo. In particolare per il suo corretto funzionamento devono essere attivate le seguenti voci di configurazione del kernel:
 
<pre>
Security options --->
[*] Enable different security model
<M>  Default Linux Capabilities
</pre>
 
''(l'ultima voce deve necessariamente essere un modulo!)''
 
Nei recenti kernel binari di Etch le precendenti condizioni non sono soddisfatte, percui il modulo '''realtime-lsm''' non funzioner� con tali kernel. Inoltre il modulo realtime-lsm � ormai ufficialmente deprecato in debian Etch.
 
In questi casi bisogner� ricompilare il kernel oppure usare l'approccio tramite rlimits.
 
=== Usare gli rlimits ===
 
E' gi� presente nel kernel un nuovo meccanismo pi� sicuro per concedere i privileggi di realtime chiamato rlimits che sostituisce completamente il modulo realtime-lsm.
 
Tuttavia, l'uso degli rlimits richiede una versione recente di PAM, la 0.80. Attualmente in Debian Sid ed Etch � presente la 0.79 ma si pu� installare il pacchetto patchato o compilarlo seguendo le seguenti istruzioni:
 
* [http://www.ubuntustudio.com/wiki/index.php/Breezy:Rlimits-Aware_PAM Rlimits-Aware_PAM]
 
== Conclusioni ==
Con un kernel cos� ottimizzato si raggiungono prestazioni realtime davvero spinte. Io ad esempio, con una modestissima SB Audigy 1 posso fare partire jack a 32 frame x 2 periodi @ 48000Hz (latenza 1.3 ms!) in modalit� solo playback. Qualche xrun avviene ancora a latenze cos� basse se si eseguono altre operazioni sulla macchina. Per avere la massima affidabilit� in full-duplex utilizzo usualmente jack a 128x2 @ 48000Hz.
 
In bocca al lupo e...
 
Happy Debian!
 
== Links ==
 
* http://www.emillo.net/home
* http://www.djcj.org/LAU/guide/index.php
* http://tapas.affenbande.org/?page_id=3
 
 
----
 
Autore: [[Utente:TheNoise|~ The Noise]]
223

contributi

Menu di navigazione