Considerazioni e domande sparse (amd64)

Attilio Rao attilio a freebsd.org
Gio 18 Gen 2007 11:04:34 CET


Il 17/01/07, Cristiano Deana<cris a gufi.org> ha scritto:
> On Wednesday 17 January 2007 15:59, Attilio Rao wrote:
>
> > > Scusami per l'ingenuita' della domanda, ma perche' hai installato le
> > > versioni per amd su un pc intel core 2?
> >
> > ... e hai provato a ricompilare il kernel con il supporto per SMP? (e
> > senza la PREEMPTION possibilmente?).
>
> Attilio, perche' non spieghi in una mail cosa si DEVE togliere, cosa si PUO'
> togliere, cosa si DEVE aggiungere, cosa si PUO' aggiungere in un kernel
> spiegando magari in pochi concetti il perche'?

Di seguito c'e' la descrizione di un po di opzioni per il kernel che
magari possono interessarvi (non ci sono sempre casi sicuri (tranne
rare eccezioni), ogniuno dovrebbe compilarsi il kernel in base
all'utilizzo che ne deve fare).

PREEMPTION: serve ad abilitare la preemption dei threads a kernel
space. Viene implementata in modo tale che ad essere preempted sono
solo gli interrupt threads e in questo modo si cerca di abbassare
l'interrupt latency (tempo di schedulazione ed esecuzione di un
interrupt). In realta', sembra che all'atto pratico abbassino le
performance tranne che in casi particolari (uno su tutti i server
NFS).

IPI_PREEMPTION: serve ad abilitare la preemption fra threads che
girano su CPU differenti. Viene utilizzata dagli scheduler che si
occupano di implementare politiche soddisfacenti. Ad oggi sembra che
migliori le prestazioni.

FULL_PREEMPTION: non deve mai essere abilitata (a meno che non stiate
sviluppando il kernel). Aumenta il numero di preemptive point nel
kernel includendo anche zone che espongono il kernel a piu' race (in
questo modo si riescono a simulare tutti i problemi tipici di
un'architettura SMP su una macchina UP). Di sicuro abbassa le
perforamance.

COUNT_*: abilita contatori che servono per la statistica ed il
profiling, quindi non andrebbero attivati se non si e' interessati a
queste cose.

DEVICE_POLLING: abilita il supporto per il polling sulle interfacce di
rete a kernel space. Essendo che in questa lista ci sono tanti
affermati sistemisti, penso che lo conosciate meglio di me :)

ZERO_COPY_SOCKETS: ottimizza la gestione dei socket (nelle fasi di
I/O). Non ho notizie sulla reale efficacia di questa feature.

INVARIANT_SUPPORT,
INVARIANTS: abilita il supporto per il tracking di alcune situazioni
"indesiderate". In pratica, piuttosto che vedere il kernel hangare,
rebootare improvvisamente, etc. sara' mandato in panic() e otterrete
cosi un dump analizzabile tramite kgdb (oppure potrete lavorare online
con ddb).

WITNESS*: abilita il supporto per la witness, strumento che serve a
rilevare incorrettezze nel locking dei subsystem. Usatelo solo in fase
di debugging del kernel (se volete testare nuove feature etc. etc.).

KDB, DDB, GDB: attiva il supporto per i debuggers kernel space. DDB e
GDB sono molto diversi fra loro e vengono usati per scopi diversi
(riferimenti alle manpage se volete saperne di piu').

KTR: abilita il tracking di alcuni eventi all'interno del kernel (man ktr).

-- 
Peace can only be achieved by understanding - A. Einstein


Maggiori informazioni sulla lista varie