10 modifiche del kernel per un sistema al Top

Non sapevo cosa mettere di titolo..forse manca un "secondo me", che comunque verrebbe tagliato nei feed. Ultimamente mi sono dedicato piu' all'aspetto kernel che non a Kubuntu o kde in generale (ve ne sarete accorti) e voglio riassumere in questo articolo quelle che sono le modifiche interessanti e per le quali possiamo poi verificare effettivamente le ripercussioni sul funzionamento del nostro sistema.

In poche parole mi sono domandato quali fossero le impostazioni base da selezionare dopo l'installazione del sistema operativo. Non si tratta di argomenti complicati, e non e' nemmeno necessario ricompilare il kernel per rendere effettive le modifiche perche', se abbiamo il kernel ufficiale Ubuntu, ci basta scaricare i relativi sorgenti.

Gli screenshoots sono indicativi..sappiate che non c'e' una regola precisa per la selezione dei driver modulari o statici. I driver compilati staticamente entrano a far parte del codice del kernel, mentre i moduli possono essere caricati / scaricati all'occorrenza. Nell'interfaccia di configurazione xconfig il simbolo "V" corrisponde alla compilazione statica, e il simbolo "." a quella modulare.

Come dicevamo prima, se ci dimenticassimo una opzione o se non avessimo le nozioni necessarie alla compilazione e installazione del kernel, bisogna procurarsi i sorgenti relativi alla nostra versione (tramite repository ad esempio) e scompattarli in /usr/src.

Una volta eseguite le modifiche installiamo tutti i moduli aprendo un terminale nei sorgenti del kernel e digitando:

 

sudo make modules modules_install

La necessita' di scrivere un articolo del genere e' dettata dal fatto che non e' sempre facile trovare in giro argomenti che riguardino la configurazione del kernel, piuttosto che la compilazione.

- Riferimenti -

kernel 2.6.23 
Processore Intel core / duo 
MainBoard Intel Corporation Mobile 945GM/PM/GMS

Andando in ordine sparso, ecco quali sono queste impostazioni:

 

- Sezione Processori e features -

- Dual core SMP

Selezioniamo Core duo / Xeon se abbiamo un bi-processore dual core (duo) Intel o Intel Xeon. Per AMD selezioniamo i moduli MK7 o MK8 a seconda della nostra architettura. Se abbiamo un altro modello di processore, in questa sezione possiamo trovare la categoria alla quale appartiene.

- Numero massimo di processori

Il valore 8 aumenta di ben 64Kb l'immagine finale del nostro kernel, che su un totale di circa 4MB sono un po' troppi. In questo caso lo scopo e' soltanto quello di ridurre il kernel. E' un esempio che puo' essere applicato anche ad altri moduli che ne permettono la modifica cliccando 2 volte sull'opzione (interfaccia xconfig) e confermando con "enter". Se abbiamo un processore dual core selezioniamo il valore 2. Questo ci permette di risparmiare 48Kb:

- Timer frequency

Imposta la latenza di comunicazione tra interrupts e BUS di periferiche

NB:Il numero di timer interrupts per secondo e' dato dalla moltiplicazione del numero di CPU per la frequenza che impostiamo (NR_CPUS * HZ )

Da qui e' facile capire come un sistema server o NUMA da 8 CPU necessiti di un timer frequency di 100Hz..massimo 200Hz, mentre un sistema Desktop si puo' portare a 1000Hz (se abbiamo un dual core meglio 300 perche' dobbiamo moltiplicare per 2).

Molto importante e' anche la selezione del modulo preemptible kernel, ormai di default nel kernel di Ubuntu:

- Paravirtualizzazione -

Deselezioniamo il modulo perche' potrebbe interferire con l'installazione dei driver Nvidia o dei driver proprietari in generale. Questo problema non sussiste con i driver forniti dai repository, perche' il kernel viene patchato.

- Power Management -

Suspend e Hibernate sono due moduli che troviamo in pianta stabile a partire dal kernel 2.6.23. La selezione e' necessaria, in alcuni casi, se vogliamo usufruire del pm-suspend o pm-hibernate senza ricevere l'errore "kernel could not suspend the system".

 

- Cpu Scaling -

Il kernel di Ubuntu dovrebbe adottare di default tutte le politiche di governor, e di default l'opzione "on demand". Questo secondo me e' sbagliato, perche' non consente di intervenire direttamente sui files che utilizza il kernel per comunicare in userspace:

/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed

Cosi' e' necessario installare un programma che ci consente di variare la frequenza. Selezionando "userspace" abbiamo sempre una possibilita' in piu' di intervenire manualmente qualora il programma che utilizziamo decida di abbandonarci (e purtroppo accade spesso..vedi cpufreqd o powernowd).

- Networking -

Il subsystem ieee80211 sta andando verso il deprecated in favore del nuovo mac80211, ancora poco utilizzato dai vari wireless drivers. I possessori di schede intel ipw3945 sanno bene che il subsystem del kernel va sovrascritto con uno piu' nuovo altrimenti i driver ipw non si riescono a compilare. Il consiglio e' quello di lasciarlo selezionato, tenendo presente che una volta sovrascritto non e' piu' possibile tornare al modulo originale del kernel (i driver che ne richiedono la compilazione non si potranno compilare. ES. ath5k)

 

- Ata / Sata -

Non voglio tornare nuovamente sull'argomento, ma il subsystem ATA/ATAPI va deselezionato mentre Serial ATA / Parallel ATA va selezionato.

All'interno della configurazione e' poi possibile scegliere i moduli corretti (o il piu' corretti possibile) per il nostro disco SATA. Se non abbiamo un Hard disk SATA facciamo esattamente lo stesso, per dar modo a LIBATA di gestirli come dispositivi SCSI qualsiasi (cdrom, floppy, usb-pen, SD, etc..)

- Bus Option -

Su sistemi con BUS PCI/express, solitamente e' il BIOS che determina la configurazione dei dispositivi PCI. Purtroppo alcune vecchie MainBoard possono avere parecchi bios-bug e di conseguenza anche diversi crash. Linux e' in grado di rilevare l'hardware sia utilizzando il BIOS sia bypassandolo raggiungendo direttamente l'hardware.

- BIOS = verra' utilizzato il BIOS per la configurazione delle periferiche

- DIRECT = Linux utilizzera' l'accesso diretto ai devices bypassando il BIOS

- MMConfig = PCI Express MMCONFIG*

- ANY = Il kernel tentera' di eseguire in successione tutte le operazioni precedenti fino a quando non ne trovera' una funzionante.

Questo non e' sempre vero:

* Il mio Asus presenta un bios-bug all'avvio (nulla di compromettente ma rallenta un po' la fase di boot) che riguarda proprio l' MMConfig se l'opzione del kernel e' selezionata su ANY. Per correggere questo bug bisogna selezionare necessariamente MMConfig.

I bios-bug sono tanti e di diverso tipo, se all'avvio notiamo (solitamente dura pochi secondi) un avviso del genere, e' bene provare le diverse combinazioni che ci offrono questi moduli.

- Sensori -

Per terminare questa breve introduzione alla configurazione del kernel, parliamo di questa sezione molto importante. Tutti i programmi in userspace di cui disponiamo, prendono le informazioni tramite le due interfacce principali del kernel:

/proc --> vecchio

/sys --> nuovo

Anche se il primo pseudo-filesystem viene oramai marcato come deprecated (sconsigliato) e' bene lasciare selezionati tutti quei moduli che ne fanno uso, altrimenti avremo problemi nel rilevare temperature, velocita' ventole, scaling etc..etc.. Fatta questa premessa torniamo ai driver per i sensori montati sulla nostra MainBoard o addirittura embedded nei moderni processori dual core AMD o Intel.

Nel dubbio, e' bene selezionarli tutti, a meno che non vogliamo provarne uno per uno per determinare quello corretto. Nello screen si fa riferimento al nuovo modulo coretemp, che in alcuni casi puo' essere l'unica soluzione possibile per rilevare la temperatura (non del case ma della cpu).

LM-SENSORS ci puo' aiutare in questa minuziona procedura di identificazione modulo. In base alle specifiche fornite da questo programma siamo in grado di capire quali sensori sono effettivamente in uso o quali sono invece mancanti e necessari.

 

Invia nuovo commento

Il contenuto di questo campo è privato e non verrà mostrato pubblicamente.
  • Indirizzi web o e-mail vengono trasformati in link automaticamente
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Linee e paragrafi vanno a capo automaticamente.

Maggiori informazioni sulle opzioni di formattazione.

CAPTCHA
Questa domanda serve per verificare che tu sia un visitatore umano (non un computer) e per prevenire lo spam
2 + 1 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.