Newsgroup: it.comp.os.linux.iniziare
Titolo: processori che si moltiplicano

Ho più di una macchina in cui il kernel mi vede due processori invece
di uno (e li usa come fossero due), e quattro dove ce ne sono due.
Finchè sono dualcore o queste ultimissime tecnologie lo posso pure
capire.
Ma la macchina dove ne vedo due al posto di uno è del 2005:
# cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 15
model           : 3
model name      : Intel(R) Pentium(R) 4 CPU 2.80GHz
stepping        : 4
cpu MHz         : 2799.202
cache size      : 1024 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 1
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 5
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe con
stant_tsc pni monitor ds_cpl cid xtpr
bogomips        : 5603.35
e il secondo identico con 'processor: 1'
# uname -a
Linux server 2.6.17.13-smp #1 SMP Sat Sep 30 17:13:16 CDT 2006 i686
prescott i386 GNU/Linux
slackware 11.0
acquistata ad agosto/05
Mentre la macchina che ne vede quattro invece di due:
# cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 15
model           : 4
model name      : Intel(R) Xeon(TM) CPU 3.40GHz
stepping        : 3
cpu MHz         : 3400.246
cache size      : 16 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 5
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm
pni monitor ds_cpl tm2 cid
bogomips        : 6789.52
e gli altri identici con 'processor: 1/2/3'
# uname -a
Linux intesys 2.4.32 #2 SMP Sat Apr 29 20:29:43 CEST 2006 i686 pentium4
i386 GNU/Linux
slackware-current al maggio/06 acquistata ad aprile/06
Per me va meglio così. Le macchine non richiedono grosse performance,
e se lancio un bzip2 di un file grosso riesco comunque a lavorare senza
rallentamenti.
Però se avessi bisogno di performance (fotoritocco/videomontaggio) per
applicazioni non multi-thread sarei alquanto penalizzato... o sbaglio?
Ciao,
Matteo

applicazioni non multi-thread sarei alquanto penalizzato... o sbaglio?
  Perche' dici questo?
-- 
  Ciao :-)
  Massimo
Rivendita on line software, magliette e gadget Linux / *BSD
http://www.thule.it
Nell'indirizzo, inserire una "h" tra la "t" e la "u"


beh, se viene visto e viene anche USATO come biprocessore, è ovvio che
per sfruttarlo al massimo devo utilizzare programmi che siano in grado
di utilizzarne due. Se io avessi un programma monoprocesso, per quanto
lo scheduler possa spezzarzi in due il processo starà O da una parte O
da un'altra parte O, al limite, una volta su uno e una volta
sull'altre, ma MAI contemporaneamente su entrambi..., sfruttando quindi
solo il 50% della reale potenza. Se fosse un server apache o mysql,
questi creano multiple istanze, e quindi si distribuiscono per i vari
processori (e comunque ad una istanza non più di due processori).
questo almeno vale per i veri biprocessori. Se poi si sono inventati
qualche tecnica diversa allora alzo le mani.
Matteo

 solo il 50% della reale potenza.
In effetti quello che dici è giusto; spesso comunque le elaborazioni su 
video e immagini possono essere facilmente parallelizzate, basta 
spezzare l'immagine o il video in pezzi diversi ed affidare 
l'elaborazione a diversi thread, per poi rimettere insieme tutti i pezzi 
elaborati.
Ciao
  Andrea

 video e immagini possono essere facilmente parallelizzate, basta 
Addendum: il fatto che si possa fare non vuol dire che sia stato fatto, 
dovresti prima controllare.
Ciao
  Andrea

> > video e immagini possono essere facilmente parallelizzate, basta
Quello era un esempio... non manipolo immagini e video da una vita,
anche perchè si tratta di un server (in questo, di caso, ma ho amici
che ce l'hanno sul pc di casa).
Un esempio è
bzip2 -9 <file-da-5-e-più-Gbyte>
o altre cose simili (e meno simili)
Matteo


Restando in generale, la risposta è: dipende. Se quello che vuoi fare 
deve per forza essere eseguito serialmente allora il mutliproc non dà 
nessun vantaggio; se invece il lavoro si può parallelizzare, potresti 
avere un guadagno di prestazioni. Dico potresti perché il lavoro va 
poi impostato in maniera parallela, o direttamente dai sorgenti del 
programma oppure tramite qualche script o altro, finché i programmi sono 
strutturati in maniera seriale non avrai nessun vantaggio da più 
processori in parallelo (ovviamente eseguendo un solo task). 
Comunque sono valutazioni che vanno fatte esaminando il compito 
specifico, a priori non si può dire se con un sistema MP le tue 
elaborazioni saranno più veloci o no.
Ciao
  Andrea


Appunto.
Supponendo di non poter parallelizzare, allora, non solo non aumento le
performance, ma sfrutto meta' della potenza che ho pagato. Difatti il
topic e' iniziato con UN singolo processore REALE, che si fa vedere
come due VIRTUALMENTE (si, dentro forse ha due cuori, ma il chip e'
uno), sprecandone cosi' la meta'.
Per questo pensavo/speravo, che con qualche meccanismo (che ne so',
ricompilare il kernel senza smp , attivare qualche driver speciale del
processore nel kernel, istruire il processore, ecc...) si potesse
utilizzare il processore come UN processore con la potenza forse non
raddoppiate (il clock non puo' che rimanere uguale) ma aumentata almeno
un po'
Chissa' come si comporta WinXP con questo tipo di processori...
bah, non mi interessa. :-)
Ciao,
Matteo

 uno), sprecandone cosi' la meta'.
Momento: se ci sono due unità di elaborazione (due core, due processori, 
...) allora vale il discorso fatto sopra; se invece si parla di 
hyperthreading (una sola unità di elaborazione, anche se il sistema ne 
vede due) allora il discorso non è valido, le prestazioni sono 
grossomodo uguali anche se non sfrutti il parallelismo.
Ciao
  Andrea


Il topic è cominciato parlando di una macchina che da l'output di cui
sotto ma che ha FISICAMENTE solo UN processore (e difatti la scheda
madre ne accetta uno).
Che processore sia però non lo so. So che la macchina è stata
acquistata nell'estate del 2005.
Da dove posso vedere che si tratta effettivamente di un solo
processore?
Matteo
amrossini@server:~$ cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 15
model           : 3
model name      : Intel(R) Pentium(R) 4 CPU 2.80GHz
stepping        : 4
cpu MHz         : 2799.202
cache size      : 1024 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 1
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 5
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe
constant_tsc pni monitor ds_cpl cid xtpr
bogomips        : 5603.35
processor       : 1
vendor_id       : GenuineIntel
cpu family      : 15
model           : 3
model name      : Intel(R) Pentium(R) 4 CPU 2.80GHz
stepping        : 4
cpu MHz         : 2799.202
cache size      : 1024 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 1
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 5
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe
constant_tsc pni monitor ds_cpl cid xtpr
bogomips        : 5597.76

 model name      : Intel(R) Pentium(R) 4 CPU 2.80GHz
I P4 sono monoprocessore, i due proc che vedi sono un artificio 
"software" per sfruttare meglio le capacità del procesore, ma l'unità di 
elaborazione è unica.
Ciao
  Andrea


Quindi se dovessi disabilitare l'smp ne vedrei uno solo?
Ah, già, è vero. Se l'smp è disattivato ne vedo uno anche se sono 10
reali ;-)
Matteo