Patch Con Kolivas: incrementare le prestazioni desktop: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
(scritta prima parte)
 
(completata e spell-checked)
Riga 1: Riga 1:
{{stub}}
=About MaXeR=
== Introduzione ==
Mi chiamo Claudio, ho 21 anni e studio Informatica presso l'Universit� degli Studi di Verona.
Le patch ''Con Kolivas'' (<tt>CK</tt>) per il [[kernel]] di linux sono una serie di patch che incrementano notevolmente le prestazioni desktop implementando uno scheduler innovativo (''staircase''), ottimizzando l'uso dello swap (''swap-prefetching'') e del sotto-sistema disco, e aggiungendo dei nuovi livelli di priorità al di fuori di quelli tradizionalmente impostabili con <code>nice</code>.


Con queste patch si ottiene un sistema desktop estremamente resposivo ed ottimizzato per l'uso interattivo.
==Contatti==
; Blog : http://www.knio.it


Se vi siete chiesti come mai Gentoo o Archlinux sono così veloci su desktop la risposta stà principalmente nell'inclusione delle patch <tt>CK</tt> nei loro kernel di default.
; MaXeR@fsfe.org : http://www.fsfe.org/Members/maxer/


== Descrizione della patch ==
; MaXeR@persone.softwarelibero.it : http://persone.softwarelibero.org/person/MaXeR


=== Staicase Scheduler ===
; em@il : [mailto:maxer@debianizzati.org maxer@debianizzati.org]<br/>[mailto:maxer@knio.it maxer@knio.it]<br/>[mailto:maxer@fsfe.org maxer@fsfe.org]


Le patch <tt>ck</tt> includono l'innovativo ''staircase scheduler''. Questo è uno schedule con una logica e una implementazione più semplice di quello usato attualmente nel kernel linux (''ingo scheduler'') che si presta ottimamente all'uso interattivo, senza penalizzare le prestazioni server. Attualmente è in discussione la possibile sostituzione dello scheduler di linux con lo staircase.


Le uniche perplessità sembrano essere sul fatto se lo ''staircase scheduler'' abbia prestazioni uguali allo scheduler attuale su sistemi multiprocessori (sui quali lo scheduler attuale è altamente ottimizzato).
; jabber : maxer@jabber.linux.it


=== Swap prefetching ===
Altra patch inclusa è la così detta ''swap prefetching''. In pratica questa patch ottimizza l'uso dello swap precaricando delle pagine non appena della ram risulta disponibile (non quando le pagie sono richieste come sul [[kernel vanilla]]), e questo velocizza notevolmente il passaggio tra le grosse applicazioni se ad esempio se ne chiude una. Inoltre vengono tenute in swap anche pagine caricate in ram in modo da rendere immediato un successivo swap-out.


Con questa patch l'utilizzo apparente dello swap sarà maggiore ma in realtà questo è dovuto alle ottimizzazioni fatte per incrementare di prestazioni.
[http://www.fsfe.org http://www.knio.it/images/a-happy-fellow.png]


=== Nuove priorità: SCHED_ISO, SCHED_IDLE ===
=Le Mie Guide=
Normalmente i processi in linux hanno priorità SCHED_NORMAL. I processi di questa classe possono avere un [[nice]] da 99 a -20 che indica la loro priorità all'interno della classe SCHED_NORMAL. Su linux sono presenti altre due classi di priorità:
# [[La struttura della Distribuzione]]
# [[I repository ed il loro utilizzo]]
# [[Introduzione all' Apt System]]
# [[Pulire Debian]]
# [[Applicare una patch ad un pacchetto Debian]]
# [[Apt-build: ottimizzazione dei pacchetti | '''Apt-build''': ottimizzazione dei pacchetti]]
# [[Apt-cdrom | '''Apt-cdrom''': aggiunta di cd/dvd nella lista dei repository]]
# [[Apt-file: ricerca all'interno dei pacchetti | '''Apt-file''': ricerca all'interno dei pacchetti]]
# [[Apt-listbugs: come monitorare i bug | '''Apt-listbugs''': come monitorare i bug]]
# [[Apt-zip: aggiornamenti senza una connessione veloce | '''Apt-zip''': aggiornamenti senza una connessione veloce]]
# [[Make-jpkg: Pacchettiziamo Java Sun| '''Make-jpkg''': Pacchettiziamo Java Sun]]
# [[Apt-Proxy: un proxy per i pacchetti Debian| '''Apt-Proxy''': un proxy per i pacchetti Debian]]
# [[Debmirror: creiamo un mirror Debian |'''Debmirror''': creiamo un mirror Debian]]
# [[Password sicure: la base della sicurezza informatica]]
# [[Come abilitare il completamento automatico 'avanzato']]
# [[Convertire immagini .nrg in immagini .iso]]
# [[mod_bandwidth: Gestione avanzata della banda]]
# [[Mrtg: monitoriamo la banda]]
# [[UsbMount: Gestione automatizzata delle periferiche usb di memorizzazione]]
# [[Powernowd: CpuScaling per AMD]]
# [[ cacti | Cacti per monitorare il sistema ]]
# [[ Debian_on_a_compaq_Presario_2154EA ]]
# [[ Munin ]]
# [[ Debian Fun ]]
# [[LAMP: Linux, Apache, MySQL e PHP]] Collaborazione con [[Utente:Keltik|Keltik]]
# [[ SysV ]]
# [[ jigdo ]]
# [[ Wireless Support ]]
# [[ Apache, SSL e CaCert.Org ]] (stub)
# [[ Pacchetizzare un tema per Bootsplash ]]
# [[ Gestione di un repository con debarchiver ]]
# [[ Ssh e autenticazione tramite chiavi ]]
# [[ Dupload per l'upload dei pacchetti Debian ]]
# [[ Synaptics touchpad ]]
# [[sshfs | Montare una directory remota con sshfs]]
# [[Unison e la sincronizzazione di directory]]
# [[Pbuilder: compilazione in ambienti puliti]]


; SCHED_NORMAL: questa è, se non diversamente specificato, priorità dei processi in linux. I processi di questa classe possono avere un [[nice]] da 99 (''minima'') a -20 (''massima'') che indica la loro priorità all'interno della classe SCHED_NORMAL


; SCHED_BATCH : questa priorità viene usata per processi non interattivi (batch). I processi di questa classe avranno priorità inferiore a qualsiasi processo SCHED_NORMAL.
=Pagine in Lavorazione=
* [[Errori frequenti nell'uso di apt-get]]
* [[Controllare lo stato di un pacchetto]]
* [[Madwifi | Installazione Driver Madwifi]]
* [[Repository non ufficiali]]


; SCHED_FIFO: usata per processi realtime. Un processo SCHED_FIFO avrà priorità superiore ad ogni altro processo (anche SCHED_NORMAL con nice -20). Normalmente processi con tali privileggi possono essere lanciati solo da root a meno di non usare [[Low-latency_2.6_kernel_per_applicazioni_audio_realtime#Modalit.C3.A0_realtime_e_realtime_scheduling|particolari tecniche]] per permettere anche a normali utenti di eseguire applicazioni realtime. I processi all'interno di questa classe possono avere una priorità da 0 (''minima'') a 99 (''massima'').


Le patch <tt>ck</tt> introducono due ulteriori livelli:
=Ho scritto anche in=
* [[ Speciale:Contributions/MaXeR | dove ho ficcato il naso ;) ]]


; SCHED_ISO : questa è la priorità chiamata ''soft realtime''. Infatti i processi di questa classe avranno priorità superiore ai processi SCHED_NORMAL ma non sono necessari i privileggi di root per eseguire programmi con questa priorità. Potremmo impostare ad esempio il nostro player audio preferito su SCHED_ISO, e non importa quanto sia carico il sitema non avremo mai salti nell'audio.
=Pagine Varie riportate da altre fonti=
 
# [[Perch� conviene sviluppare esclusivamente Software Libero]]
; SCHED_IDLE: questa classe di processi viene eseguita solo quando il processore è in IDLE. Potremo lanciare compilazioni di kernel, aggiornamenti di sitema, pesanti cron jobs usando questa priorità e non noterermo il benchè minimo degrado delle prestazioni durante il nostro utilizzo interattivo.
# [[Vendere Software Libero]]
 
# [[Perch� il software non deve avere padroni]]
Quando lanciamo un processo in linux questo sarà automaticamente SCHED_NORMAL. Per lanciare processi con altre classi di priorità bisogna usare gli <tt>schedtools</tt>. E' presente il seguente repository per debian:
# [[La comunit� del software libero dopo 20 anni]]
 
# [[Ricompense e Motivazione]]
deb http://users.tpg.com.au/sigm/debian sid main
 
''(anche se indicato per sid anche su etch funziona senza problemi)''
 
Ecco alcuni esempi:
 
schedtools -D -e apt-get dist-upgrade # aggiornare in modalità SCHED_IDLE
 
schedtools -I -e xmms                # xmms in modalità SCHED_ISO
 
schedtools -I $$                      # trasforma la shell corrente in SCHED_ISO
 
Per ulteriori informazioni rimando alla semplice e chiara pagina: <tt>man schedtools</tt>
 
== Installazione ==
 
Le patch <tt>ck</tt> possono essere scaricate da http://www.kernel.org:
 
* http://www.kernel.org/pub/linux/kernel/people/ck/patches/2.6/
 
e si applicano al primo kernel vanilla stabile di ogni serie. Ad esmpio l'ultimo kernel stabile è attualmente il 2.6.16.4 ma le patch ck si applicano al kernel 2.6.16 in quanto includono anche le patch inserite dal 2.6.16 al 2.16.4. Attualmente l'ultimo patch set ck è il [http://www.kernel.org/pub/linux/kernel/people/ck/patches/2.6/2.6.16/2.6.16-ck5/ 2.6.16-ck5], ed il file da scaricare e porre in <tt>/usr/src/</tt> è il seguente:
 
* [http://www.kernel.org/pub/linux/kernel/people/ck/patches/2.6/2.6.16/2.6.16-ck5/patch-2.6.16-cks5.bz2 patch-2.6.16-cks5.bz2]
 
Una volta scompattati i sorgenti del kernel vanilla in <tt>/usr/src/</tt> si possono patchare con:
 
$ cd /usr/src/linux-2.6.XX/
$ bzcat ../patch-2.6.XX-ckY.bz2 | patch -p1
 
Per una questione di ordine conviene rinominare la directory dei sorgenti in modo da ripecchiare la patch usata:
$ cd /usr/src
$ mv linux-2.6.16 linux-2.6.16-ck5
 
E' consigliato usare un file di configurazione per il kernel vanilla e dare oldconfig:
 
$ cd linux-2.6.16-ck5
$ cp /boot/config-2.6.16-vanilla .
$ make oldconfig
 
A meno che non sappiate perfettamente cosa state facendo lasciate tutte le risposte di default alle domande fatte dell'oldconfig.
 
A questo punto è possibile compilare il kenrnel, ovviamente [[Debian Kernel Howto|alla debian-way]]. Usiamo la priorità più bassa possibile, se siamo già su un kernel ck:
 
$ schedtools -D -e time fakeroot make-kpkg --append-to-version -desktop \
  --revision 0.1 kernel_image
 
In questo modo la compilazione non interferirà con il normale utlizzo interattivo del computer e avremo anche stampata la durata della compilazione con <code>time</code>.
== Links ==
* [http://members.optusnet.com.au/ckolivas/kernel/ Homepage delle patch Con Kolivas]
* [http://ck.kolivas.org/faqs/walkthrough.txt Quick walthrough on manually patching to -ck for beginners]
 
 
 
 
[[Categoria:Kernel]][[Categoria:Desktop]]