Pagina 1 di 6

compilazione del kernel

Inviato: sab 28 feb 2009, 20:45
da slackquerano
scusate per questo post.
ho sentito che si può compilare un kernel nostro per velocizzare il sistema.
come fare?
grazie in anticipo per l' aiuto!

Re: compilazione del kernel

Inviato: sab 28 feb 2009, 20:50
da raffaele181188
leggi nel wiki, ricompilare_il_kernel

Ma sinceramente i vantaggi in termini di prestazioni non sono poi tanti

Re: compilazione del kernel

Inviato: sab 28 feb 2009, 21:09
da danix
più che altro noterai notevoli miglioramenti una volta che l'avrai fatto "dimagrire" di tutti i moduli che ti sono inutili... :D

Oltre al wiki ti consiglio, sopratutto se è la prima volta che ricompili di fare tesoro di questi 2 link: Non te ne pentirai... ;)

Re: compilazione del kernel

Inviato: sab 28 feb 2009, 23:46
da submax82
kernelpkg = ottimo consiglio 8) :lol:

Re: compilazione del kernel

Inviato: sab 28 feb 2009, 23:56
da algol
Beh è utile tra l'altro scegliere un'architettura ottimizzata per il proprio sistema, ma soprattutto è un gran esercizio per "conoscere" Linux e lo hardware della propria macchina! :thumbright:

Re: compilazione del kernel

Inviato: dom 1 mar 2009, 13:33
da raffaele181188
algol ha scritto:ma soprattutto è un gran esercizio per "conoscere" Linux e lo hardware della propria macchina!
Già... mentre la velocità del sistema in generale non viene influenzata più di tanto... I programmi restano quelli compilati per i486, senza ulteriori ottimizzazioni.. Poi tutta questa foga di ottimizzare e riottimizzare l'assembly... Fatevi un paio di settimana su Gentoo (perchè tanto ci vuole a installare :D :D ) e vedete come le cose quasi non cambino, nonostante le migliori ottimizzazioni di questo mondo

@Danix Togliere i moduli inutili può far stare il kernel in una manciata di MB sull'hard disk, ma la velocità del sistema è sempre quella perchè di solito non vengono caricati moduli inutili. E poi i moduli non è che consumino tanta RAM o tempo CPU

Re: compilazione del kernel

Inviato: dom 1 mar 2009, 14:04
da danix
Senza l'opzione compact di lilo con il kernel huge ci stavo una decina di secondi a caricare prima che apparisse il pinguino... stessa situazione con un kernel "dimagrito" ci mettevo 3 0 4 secondi, con l'opzione compact è istantaneo... ;)
Hai ragione che i moduli inutili non occupino altro che spazio su disco, ma è altrettanto inutile averli se non ne hai bisogno... ;)

Re: compilazione del kernel

Inviato: dom 1 mar 2009, 14:58
da Mario Vanoni
raffaele181188 ha scritto: Già... mentre la velocità del sistema in generale non viene influenzata più di tanto... I programmi restano quelli compilati per i486, senza ulteriori ottimizzazioni.. Poi tutta questa foga di ottimizzare e riottimizzare l'assembly... Fatevi un paio di settimana su Gentoo (perchè tanto ci vuole a installare :D :D ) e vedete come le cose quasi non cambino, nonostante le migliori ottimizzazioni di questo mondo
Hai ragione ed hai torto allo stesso tempo.

Uso solo kernel puramente statici,
le utilities (livello shell) preferite compilate a mano con
-O2 -s -static
la differenza si nota.

[OT] usare -Os al posto di -O2 rallenta,
anche se il codice generato e` piu` piccolo.
Ottimizzazioni sbagliate?
[\OT]

Re: compilazione del kernel

Inviato: dom 1 mar 2009, 16:00
da targzeta
raffaele181188 ha scritto:...E poi i moduli non è che consumino tanta RAM o tempo CPU
Ricorda solo che i moduli del kernel non vengono mai swappati ;). Detto questo, se un modulo serve va caricato....

Spina

Re: compilazione del kernel

Inviato: dom 1 mar 2009, 20:13
da raffaele181188
Io dico che la differenza la fa più ricompilarsi un programma che ricompilarsi il kernel. Detto questo, è comunque poca. Non so se esistano dei tool per quantificarla, ma a occhio non si nota. Per quanto riguarda i moduli caricati in RAM (che come dice giustamente emanuele non vengono swappati)
1) Non sono pesanti (a livello di MB)
2) Servono comunque a far funzionare la macchina
3) Udev carica tutti e solo quelli che servono a far funzionare l'hardware, quindi non c'è "spreco" di ram
Volevo solo far presente a Slackwerano che non avrà un computer più veloce ricompilandosi il kernel.. Le ottimizzazioni a livello di assembly (che pure ci sono, certo) sul kernel si sentono poco. Su un applicativo, invece, hanno più senso. Ma molto dipende da come è stato scritto il programma e dal compilatore a disposizione

Anche Danix ha ragione quando dice che non serve portarsi dietro moduli inutili. Ma il vantaggio non è nella reattività del sistema; l'unica cosa che mi viene in mente è che con un configure appropriato si guadagna tempo a ricompilare e non si spreca spazio su hard disk

Offtopic: Per quella che è la mia esperienza personale, ricompilarsi un kernel non porta nessun aumento di prestazioni, tanto è vero che ho smesso di ricompilarmeli. Secondo me quella di ricompilare per avere un computer più prestazionale è una leggenda metropolitana che è ora di dimenticare, alimentata solo dall'effetto placebo :D

Re: compilazione del kernel

Inviato: dom 1 mar 2009, 23:17
da Mario Vanoni
raffaele181188 ha scritto:Io dico che la differenza la fa più ricompilarsi un programma che ricompilarsi il kernel. Detto questo, è comunque poca. Non so se esistano dei tool per quantificarla, ma a occhio non si nota. Per quanto riguarda i moduli caricati in RAM (che come dice giustamente emanuele non vengono swappati)
1) Non sono pesanti (a livello di MB)
2) Servono comunque a far funzionare la macchina
3) Udev carica tutti e solo quelli che servono a far funzionare l'hardware, quindi non c'è "spreco" di ram
Volevo solo far presente a Slackwerano che non avrà un computer più veloce ricompilandosi il kernel.. Le ottimizzazioni a livello di assembly (che pure ci sono, certo) sul kernel si sentono poco. Su un applicativo, invece, hanno più senso. Ma molto dipende da come è stato scritto il programma e dal compilatore a disposizione

Anche Danix ha ragione quando dice che non serve portarsi dietro moduli inutili. Ma il vantaggio non è nella reattività del sistema; l'unica cosa che mi viene in mente è che con un configure appropriato si guadagna tempo a ricompilare e non si spreca spazio su hard disk

Offtopic: Per quella che è la mia esperienza personale, ricompilarsi un kernel non porta nessun aumento di prestazioni, tanto è vero che ho smesso di ricompilarmeli. Secondo me quella di ricompilare per avere un computer più prestazionale è una leggenda metropolitana che è ora di dimenticare, alimentata solo dall'effetto placebo :D
Si vede la differenza di gente che viene da UNIX
e quella che viene da M$, migrata a Linux.

Perche`?

Anche sotto AT&T SVR3 compilare con cc -lc_s
risparmiava spazio sul HD, ma era piu` lento che con il solo cc.

Un kernel puramente statico carica tutto in memoria,
non perde tempo a caricare tot moduli.

Visto che parli di tempo, con gcc:
un kernel statico sotto i 6 minuti,
+ make modules
+ make modules_install
un kernel con moduli impiega 15 minuti,
e sempre con un kernel ridotto al minimo.

_NON_ _E`_ _UNA_ _FLAME_,
ma denigrare a leggenda metropolitana (a` la masalapianta) esperienze vissute?

Re: compilazione del kernel

Inviato: lun 2 mar 2009, 10:39
da conraid
Mario Vanoni ha scritto: ma denigrare a leggenda metropolitana (a` la masalapianta) esperienze vissute?
che se usi per esempio lvm2 hai bisogno "per forza" di creare un initrd, ed a volte un kernel troppo grande (non so cosa ci metti dentro) non riesce ad essere caricato insieme all'initrd. Non è significativo, ma huge non ci riesce.
Esperienze vissute? Proprio in questi giorni.
Leggi i README nel cd/dvd/ftp della Slackware

Re: compilazione del kernel

Inviato: lun 2 mar 2009, 19:04
da urka58
Compilare un kernel ad hoc per la macchina in uso da vantaggi solo in termini di uso della memoria, inteso come quantità usata, non modalità d'uso, visto che in questo periodo i discorsi sull'utilizzo sono di moda qui nel forum (niente di male, sia chiaro). Quindi, a meno di disporre di una macchina con una quantità di memoria limitata, non serve ad aumentare le prestazioni.
Se uno vuole cominciare ad avere una maggiore conoscenza del sistema sul quale lavora è un esercizio utile.
Questa almeno è la mia esperienza...
Ciao

Re: compilazione del kernel

Inviato: lun 2 mar 2009, 19:39
da urka58
conraid ha scritto:
Mario Vanoni ha scritto: ma denigrare a leggenda metropolitana (a` la masalapianta) esperienze vissute?
che se usi per esempio lvm2 hai bisogno "per forza" di creare un initrd, ed a volte un kernel troppo grande (non so cosa ci metti dentro) non riesce ad essere caricato insieme all'initrd. Non è significativo, ma huge non ci riesce.
Esperienze vissute? Proprio in questi giorni.
Leggi i README nel cd/dvd/ftp della Slackware
Conraid, il tuo discorso non fa una grinza, ma è una particolarità di Slackware, non mi pare possa valere in generale.
Mi spiego: nel caso di lvm2, nel README si dice appunto della necessità di creare un'immagine RAM e di usare il kernel generic in modo da assicurarsi che non vi siano problemi nel caricare kernel e immagine, ma ciò è dovuto alla scelta della distro di rilasciare un kernel huge, molto pesante, verosimilmente adatto a tutti i sistemi, lasciando all'utente la possibilità di usare un kernel generic, più leggero in combinazione con l'initrd.
Altre distro, Debian ad esempio, dispongono di un installer più "sofisticato" che crea un kernel di 1,4 MB e un initrd ad hoc per il sistema (o almeno ci provano).
E' vero che qui si parla di Slackware, ma se non ho male interpretato il tuo discorso, non esiste una "necessità in assoluto" di creare un'immagine RAM.
NOTA: il paragone con Debian è stato fatto solo perchè è la distro che conosco meglio, che non significa bene, oltre a Slackware.

Re: compilazione del kernel

Inviato: lun 2 mar 2009, 19:50
da conraid
Per questo dicevo "non so cosa ci metti dentro", se usa un kernel statico con pochi moduli allora ok. Ma alla fine in una macchina desktop mi "serve" anche la possibilità di caricare filesystem vari, periferiche usb varie, varie opzioni di rete, etc... Poi se vuoi un kernel il più snello possibile, ma che non può "vedere" un hard disk esterno o una periferica usb che ti hanno dato libero di farlo. Ma un utente comune o uno che voglia testare qualcosa, alla fine ha bisogno di queste cose.
Se poi vogliamo parlare di particolare contesti di sicurezza ok discutiamone, ma non mi sembra questo il caso.

Per lvm l'initrd mi sembra necessario comunque, visto che non inserisce solamente i moduli in initram ma anche le utility per caricare i device lvm (vgscan e vgchange) che sono link a lvm.static, e non credo che sia una questione "solo slackware" questa.
Se mi fai sapere come fare per non usare initrd per caricare una root in lvm mi fai un favore.