Core i7 e scheduler

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
Ansa89
Iper Master
Iper Master
Messaggi: 2703
Iscritto il: mer 29 ago 2007, 17:57
Nome Cognome: Stefano Ansaloni
Slackware: 14.2 64bit
Kernel: 4.9.61
Desktop: XFCE 4.12
Località: Modena

Core i7 e scheduler

Messaggio 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?
Ultima modifica di Ansa89 il dom 25 apr 2010, 12:22, modificato 1 volta in totale.

ocman
Linux 2.x
Linux 2.x
Messaggi: 239
Iscritto il: gio 31 lug 2008, 18:18
Slackware: ArchLinux
Desktop: xfce
Distribuzione: OpenIndiana

Re: Core i7 e scheduler

Messaggio 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
Ultima modifica di ocman il dom 25 apr 2010, 12:43, modificato 1 volta in totale.

Avatar utente
Ansa89
Iper Master
Iper Master
Messaggi: 2703
Iscritto il: mer 29 ago 2007, 17:57
Nome Cognome: Stefano Ansaloni
Slackware: 14.2 64bit
Kernel: 4.9.61
Desktop: XFCE 4.12
Località: Modena

Re: Core i7 e scheduler

Messaggio da Ansa89 »

ocman ha scritto:credo intendessi hyper-threading
Oddio! Avevo scritto una super cavolata :oops: :oops: .
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.

ocman
Linux 2.x
Linux 2.x
Messaggi: 239
Iscritto il: gio 31 lug 2008, 18:18
Slackware: ArchLinux
Desktop: xfce
Distribuzione: OpenIndiana

Re: Core i7 e scheduler

Messaggio 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

Avatar utente
Ansa89
Iper Master
Iper Master
Messaggi: 2703
Iscritto il: mer 29 ago 2007, 17:57
Nome Cognome: Stefano Ansaloni
Slackware: 14.2 64bit
Kernel: 4.9.61
Desktop: XFCE 4.12
Località: Modena

Re: Core i7 e scheduler

Messaggio 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).

ocman
Linux 2.x
Linux 2.x
Messaggi: 239
Iscritto il: gio 31 lug 2008, 18:18
Slackware: ArchLinux
Desktop: xfce
Distribuzione: OpenIndiana

Re: Core i7 e scheduler

Messaggio 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."

Avatar utente
Ansa89
Iper Master
Iper Master
Messaggi: 2703
Iscritto il: mer 29 ago 2007, 17:57
Nome Cognome: Stefano Ansaloni
Slackware: 14.2 64bit
Kernel: 4.9.61
Desktop: XFCE 4.12
Località: Modena

Re: Core i7 e scheduler

Messaggio 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.

ocman
Linux 2.x
Linux 2.x
Messaggi: 239
Iscritto il: gio 31 lug 2008, 18:18
Slackware: ArchLinux
Desktop: xfce
Distribuzione: OpenIndiana

Re: Core i7 e scheduler

Messaggio 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

Avatar utente
Ansa89
Iper Master
Iper Master
Messaggi: 2703
Iscritto il: mer 29 ago 2007, 17:57
Nome Cognome: Stefano Ansaloni
Slackware: 14.2 64bit
Kernel: 4.9.61
Desktop: XFCE 4.12
Località: Modena

Re: Core i7 e scheduler

Messaggio 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 :-k .

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

ocman
Linux 2.x
Linux 2.x
Messaggi: 239
Iscritto il: gio 31 lug 2008, 18:18
Slackware: ArchLinux
Desktop: xfce
Distribuzione: OpenIndiana

Re: Core i7 e scheduler

Messaggio 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à.

ocman
Linux 2.x
Linux 2.x
Messaggi: 239
Iscritto il: gio 31 lug 2008, 18:18
Slackware: ArchLinux
Desktop: xfce
Distribuzione: OpenIndiana

Re: Core i7 e scheduler

Messaggio 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

Avatar utente
Ansa89
Iper Master
Iper Master
Messaggi: 2703
Iscritto il: mer 29 ago 2007, 17:57
Nome Cognome: Stefano Ansaloni
Slackware: 14.2 64bit
Kernel: 4.9.61
Desktop: XFCE 4.12
Località: Modena

Re: Core i7 e scheduler

Messaggio da Ansa89 »

Capito.

Rispondi