Pagina 1 di 1
Core i7 e scheduler
Inviato: dom 25 apr 2010, 10:10
da Ansa89
Con i nuovi processori i7 è stato reintrodotto il hyper-threading, quindi mi sorge un dubbio: (se mai avrò uno di questi processori) quale cpu-scheduler è meglio compilare all'interno del kernel?
Quello per il multithreading o quello per architetture smp?
Re: Core i7 e scheduler
Inviato: dom 25 apr 2010, 12:14
da ocman
Ciao
- credo intendessi hyper-threading
http://www.intel.com/technology/platfor ... /index.htm
- come avveniva per l'hyperthreading sui vecchi Pentium, il kernel dovrebbe rilevare 2 cpu LOGICHE per ogni core. Quindi a livello di scheduler fai la stessa scelta che faresti per un normale SMP
- non c'è ancora molta documentazione ufficiale, forse per essere certi della migliore configurazione conviene fare dei test
http://kernel-perf.sourceforge.net/about_tests.php
Re: Core i7 e scheduler
Inviato: dom 25 apr 2010, 12:26
da Ansa89
ocman ha scritto:credo intendessi hyper-threading
Oddio! Avevo scritto una super cavolata

.
ocman ha scritto:come avveniva per l'hyperthreading sui vecchi Pentium, il kernel dovrebbe rilevare 2 cpu LOGICHE per ogni core. Quindi a livello di scheduler fai la stessa scelta che faresti per un normale SMP
Sul fatto che rileva due cpu logiche sono d'accordo, ma non credo che gli sviluppatori del kernel si divertano a creare scheduler differenti se alla fine vengono implementati in modo uguale.
Nel kernel c'è chiaramente scritto che lo scheduler per il threading non è consigliato su architetture smp e viceversa.
Re: Core i7 e scheduler
Inviato: dom 25 apr 2010, 13:13
da ocman
Ansa89 ha scritto:Nel kernel c'è chiaramente scritto che lo scheduler per il threading non è consigliato su architetture smp e viceversa.
Forse continui a confondere incosciamente la tecnologia intel con la normale politica di schedulazione dei thread.
Intel offre una tecnologia pressochè trasparente alla gestione a livello OS dei thread.
Lo "scheduler per il threading" può benissimo funzionare in sistemi a singolo processore. Il kernel in questo ultimo caso sarà ottimizzato per ordinare nella coda i vari thread creati dai processi in esecuzione indipendentemente che sotto di esso ci siano uno o più cores. Nel caso ci siano ciù cores si hanno comportamenti molto simili al multiprocessing per questo l'utilizzo ne viene scongliato.
http://codex.cs.yale.edu/avi/os-book/OS ... ir/ch5.pdf
Re: Core i7 e scheduler
Inviato: dom 25 apr 2010, 13:17
da Ansa89
Vediamo se ho capito: in pratica intel gestisce a livello hw i thread, in questo modo il sistema operativo può non conoscere nulla sui thread e schedulare normalmente i processi, giusto?
In questo caso la risposta alla mia domanda è immediata (scheduler per smp).
Re: Core i7 e scheduler
Inviato: dom 25 apr 2010, 13:25
da ocman
a quanto pare si:
http://software.intel.com/en-us/article ... ith-linux/
"A processor which does hyperthreading looks like two independent CPUs, but it [processes] should not be scheduled [by the scheduler] as such - it is better to divide process across real (hardware) processors first."
Re: Core i7 e scheduler
Inviato: dom 25 apr 2010, 15:01
da Ansa89
Ok, allora mi viene un altro dubbio: siamo sicuri che il kernel capisca che la seconda cpu è logica (non fisica) e di conseguenza non scheduli processi su quest'ultima?
PS: comunque nel kernel c'è sia lo scheduler smp, sia smt; quindi credo che la mia domanda iniziale sia ancora valida, o continuo a non aver capito?
Intel ha scritto:Hyper-Threading, also referred to as simultaneous multithreading (SMT), allows different threads to run simultaneously on different execution units within one physical processor.
In pratica con lo scheduler smt informi il kernel che le cpu che vede sono logiche e può schedulare più thread di uno stesso processo su ognuna di esse.
Questo è quello che ho capito.
Re: Core i7 e scheduler
Inviato: dom 25 apr 2010, 15:22
da ocman
esatto.
La cosa da parte di kernel.org per i core i7 non è molto documentata, è per quello che se avessi un core i7 farei un semplice test per mettere la cpu sotto stress.
Infatti qui vengono citate le cpu che beneficiano del SMT ma manca ancora la nuova architettura nehalem.
http://cateee.net/lkddb/web-lkddb/SCHED_SMT.html
Non andrei ad occhi chiusi sulla SMT poichè ci sono controlli aggiuntivi che a volte introducono overhead e basta
http://www.ibm.com/developerworks/linux ... /l-htl/#h1 <<< qui spiega qualcosina anche se il test è stato fatto sui vecchi pentium
Re: Core i7 e scheduler
Inviato: dom 25 apr 2010, 15:30
da Ansa89
Da notare il fatto che CONFIG_SCHED_SMT dipende sempre da CONFIG_SMP, il ché lascerebbe pensare che il kernel vede in ogni caso le cpu logiche come cpu fisiche

.
Più vado avanti, più mi pento della domanda iniziale

.
Re: Core i7 e scheduler
Inviato: dom 25 apr 2010, 15:47
da ocman
Si, magari con SMT le decisioni dello scheduler sono più efficaci su cpu con hyperthreading anche se le cpu vengono viste sempre come fisicamente separate (siccome dipende da SMP)
Pat nella configurazione della slackware64-current penso l'abbia abilitato per ovvii motivi di compatibilità.
Re: Core i7 e scheduler
Inviato: dom 2 mag 2010, 11:33
da ocman
...ho trovato per caso una informazione importante riguardo alla configurazione per i7
è fortemente consigliato abilitare
"CONFIG_NUMA: Numa Memory Allocation and Scheduler Support (EXPERIMENTAL)"
http://cateee.net/lkddb/web-lkddb/NUMA.html
Descrizione:
"Enable NUMA (Non Uniform Memory Access) support.
The kernel will try to allocate memory used by a CPU on the local memory controller of the CPU and add some more NUMA awareness to the kernel.
For 64-bit this is recommended if the system is Intel Core i7 (or later), AMD Opteron, or EM64T NUMA.
For 32-bit this is only needed on (rare) 32-bit-only platforms that support NUMA topologies, such as NUMAQ / Summit, or if you boot a 32-bit kernel on a 64-bit NUMA platform."
Una piccola descrizione della nuova tecnica NUMA usata dai Corei7 è qui:
http://en.wikipedia.org/wiki/Symmetric_ ... ternatives
Le motivazioni principali di questo supporto specifico per l'allocazione della memoria e di conseguenza dello scheduling per i7 sono:
-il fatto che il controller della memoria è sulla cpu stessa
-il fatto che è stata introdotta anche la cache L3 che viene interrogata con algoritmi differenti rispetto alla cache L2
Re: Core i7 e scheduler
Inviato: lun 3 mag 2010, 16:19
da Ansa89
Capito.