# [Controlllo] 2 cpu, lavorano tutte e due?

## kattivo

Salve, 

Mi trovo davanti a un IBM Netfinity serie 7000. 

Serie a 4 processori, nel mio caso c'e ne sono solo 2.

Ho installato gentoo, pero' mi viene il dubbio che funzioni a 1 processore.

come posso avere la certezza che funzionino tutti e due?

----------

## Flonaldo

 *kattivo wrote:*   

> Salve, 
> 
> Mi trovo davanti a un IBM Netfinity serie 7000. 
> 
> Serie a 4 processori, nel mio caso c'e ne sono solo 2.
> ...

 

Se al boot vedi due bei pinguini in alto a sinistra allora stai usando due processori! Ovviamente devi aver attivato il supporto giusto nel kernel  :Smile:   :Smile:   :Smile: 

----------

## kattivo

eh...piccola cosa che mi son dimenticato di specificare...la macchina è remota! la raggiungo in ssh

quindi il boot non l'ho mai visto  :Sad: 

----------

## Flonaldo

 *kattivo wrote:*   

> eh...piccola cosa che mi son dimenticato di specificare...la macchina è remota! la raggiungo in ssh
> 
> quindi il boot non l'ho mai visto 

 

Bhè...lancia un top e vedi come sono distribuiti i carichi di lavoro! Credo sia la cosa piu giusta da fare; ovviamente nel make.con assicurati di aver messo -j3

oltre agli eventuali supporti nel kernel!  :Smile: 

O altrimenti prova con un  

```
cat /proc/cpuinfo 
```

 e vedi cosa ti dice!

Ciao

----------

## kattivo

Allora...se guardo con il top, mi dice che c'e un processore...

```

top - 13:27:42 up 1 day, 16:15,  1 user,  load average: 0.00, 0.00, 0.00

Tasks:  78 total,   8 running,  70 sleeping,   0 stopped,   0 zombie

Cpu(s):  0.0% us,  0.0% sy,  0.0% ni, 99.9% id,  0.0% wa,  0.0% hi,  0.0% si

Mem:    644168k total,   304308k used,   339860k free,    53192k buffers

Swap:   506512k total,     2568k used,   503944k free,   139724k cached

```

La macchina sembra si stia grattando i co...lioni... 

il problema è che qui non specifica, se sta usando 1 o 2 cpu..

riguardo il 

cat /proc/cpuinfo

```

Crypton / # cat /proc/cpuinfo

processor       : 0

vendor_id       : GenuineIntel

cpu family      : 6

model           : 8

model name      : Pentium III (Coppermine)

stepping        : 3

cpu MHz         : 801.959

cache size      : 256 KB

fdiv_bug        : no

hlt_bug         : no

f00f_bug        : no

coma_bug        : no

fpu             : yes

fpu_exception   : yes

cpuid level     : 2

wp              : yes

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr sse

bogomips        : 1607.62

processor       : 1

vendor_id       : GenuineIntel

cpu family      : 6

model           : 8

model name      : Pentium III (Coppermine)

stepping        : 6

cpu MHz         : 801.959

cache size      : 256 KB

fdiv_bug        : no

hlt_bug         : no

f00f_bug        : no

coma_bug        : no

fpu             : yes

fpu_exception   : yes

cpuid level     : 2

wp              : yes

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr sse

bogomips        : 1603.79

Crypton / #

```

I processori per vederli li vede tutti e due! ma per quello anche nel cd live me li vedeva cosi!

io voglio sapere se realmente li sta usando! 

e con questo non ho ancora la certezza....

----------

## gutter

Tranquillo stai usando due CPU  :Wink: 

----------

## kattivo

mm ...da cosa lo deduci? 

non voglio solo sapere se sto usando 1 2 o 100 cpu....

voglio capire come si fa a capire!

----------

## Flonaldo

 *kattivo wrote:*   

> mm ...da cosa lo deduci? 
> 
> non voglio solo sapere se sto usando 1 2 o 100 cpu....
> 
> voglio capire come si fa a capire!

 

Bhè...insomma; cpuinfo parla chiarissimo! Non credo tu debba avere altri dubbi!

Poi credo te ne accorgerai sicuramente dalla compilazione, se vola...

----------

## mouser

Bhè...

```
# cat /proc/cpuinfo
```

restituisce i processori che effettivamente sono utilizzati....

Nel caso ci siano più processori (ho provato anch'io su una NetFinity 7000, a 4 processori però, e su una Sun Enterprise 450) ma non vengano utilizzati, nelle prime righe del dmesg vedi i processori riconosciuti, ma /proc/cpuinfo ne visualizza solo uno.

In ogni caso, l'utilizzo o meno di più processori è dovuto alla presenza o meno del supporto SMP nel kernel.

Ciriciao

mouser  :Wink: 

----------

## fedeliallalinea

 *mouser wrote:*   

> In ogni caso, l'utilizzo o meno di più processori è dovuto alla presenza o meno del supporto SMP nel kernel.

 

Si e' questo che gestisce l'utilizzo di piu' processori o del hyperthreading dei pentium4

----------

## mouser

 *fedeliallalinea wrote:*   

> Si e' questo che gestisce l'utilizzo di piu' processori o del hyperthreading dei pentium4

 

Già, visto che le cpu con hyperthreading altro non sono che una singola scatola, che però comprende due processori, anche per attivare questa feature è necessario SMP

Ciriciao

mouser  :Wink: 

----------

## salade

 *kattivo wrote:*   

> 
> 
> voglio capire come si fa a capire!

 

se proprio proprio non ti fidi di /proc/cpuinfo puoi sempre fare un bel ciclo infinito in c tipo questo:

```

int main () {

  for (;;);

  return 0;

}

```

Lo compili, lo fai partire e poi guardi con top tutte le statistiche

----------

## kattivo

Ragazzi...io non mi fido ancora....

esiste un programma tipo l'mrtg? magari piu veloce..? mrtg ti fa il grafico di tutti i processori...

a me basta anche qlk che funzioni via shell...qualcosa di rapido..!

----------

## earcar

 *mouser wrote:*   

> Già, visto che le cpu con hyperthreading altro non sono che una singola scatola, che però comprende due processori, anche per attivare questa feature è necessario SMP

 

La cpu fisica (e quindi il core) di un pentium 4 ht è uno solo, viene solo sfruttato di più dall'hyperthreading

----------

## .:chrome:.

 *kattivo wrote:*   

> Mi trovo davanti a un IBM Netfinity serie 7000. 
> 
> Serie a 4 processori, nel mio caso c'e ne sono solo 2.
> 
> Ho installato gentoo, pero' mi viene il dubbio che funzioni a 1 processore.
> ...

 

banalmente... usa top

ha le opzioni per mostrare i processori multipli.

----------

## kattivo

Qaule è l'opzione per vedere i proc multipli?

----------

## Flonaldo

 *kattivo wrote:*   

> Qaule è l'opzione per vedere i proc multipli?

 

Prova con

```
 uname -a
```

 e vedi cosa ti dice a riguardo del processore  :Smile: 

----------

## .:chrome:.

 *kattivo wrote:*   

> Qaule è l'opzione per vedere i proc multipli?

 

è scritto nella guida. basta premere "1"

comuqnue se hai un kernel SMP, e hai più di un processore è ovvio che lavorano tutti quelli che hai. altrimenti cosa le hanno messe a fare le routines SMP?

----------

## Kernel78

In portage è presente anche wmSMPmon solo che mi pare funzioni solo per Window Maker.

----------

## kattivo

Ok ora ho la certezza! Grazie mille  :Razz: 

----------

## Kernel78

 *kattivo wrote:*   

> Ok ora ho la certezza! Grazie mille 

 

Come fai ad avere la certezza ? Se non ti fidavi delle routine SMP del kernel non dovresti fidarti nemmeno dell'output di altri sw   :Wink: 

Potresti controllare se sui pin delle CPU passano i valori che ti aspetteresti   :Laughing: 

----------

## kattivo

 *Kernel78 wrote:*   

>  *kattivo wrote:*   Ok ora ho la certezza! Grazie mille  
> 
> Come fai ad avere la certezza ? Se non ti fidavi delle routine SMP del kernel non dovresti fidarti nemmeno dell'output di altri sw  
> 
> Potresti controllare se sui pin delle CPU passano i valori che ti aspetteresti  

 

Proprio cosi ho fatto   :Very Happy: 

Apparte li scherzi...il Netfinity puo' avere un controllo hardware, per monitorare le Cpu...Ho usato quello!

----------

## earcar

La febbre ha partorito questo: 

```
grep "^processor[[:space:]]*:" /proc/cpuinfo | wc -l
```

Oh no un'altra cosa inutile   :Laughing:   :Laughing: 

----------

## mambro

Visto che siamo in tema qualcuno mi sa dire se in genere un dual core equivale in prestazioni a due processori separati sulla scheda madre? Lo so è la domanda più generica del mondo e magari anche OT ma in linea di massima cosa cosa cambia da un dual core a due processori?

----------

## earcar

 *mambro wrote:*   

> anche OT

 

togli l'anche  :Rolling Eyes: 

inoltre ne abbiamo parlato spesso e se cerchi con google trovi anche vari benchmark

----------

## kattivo

Io ho testato due proc. dual core,...

l'hardware era piu o meno questo :

Scheda madre Tyan (modello esatto non lo ricordo, basta guardare nel sito, quello a due proc. opterom, con pci-e Sli)

2 opteron 3.8 ghz, 4 gb di ram, 4 dischi scsi raid (mirror controller 3ware 4 dischi)

Diciamo che un processore dual core, confrontato con 2 processori uguali...va al 70% 

2 processori separati vanno un po di piu....il 30% in piu! te lo posso assicurare..!

Almeno che tu non usi i-ram (sistema operativo su I-ram) e quindi hai maggiori prestazioni con un dual core..(questo non l'ho testato, l'ho solo sentito) presto vi faro un post...appena ho i soldi per prendermi lo slot pci i-ram

----------

## .:chrome:.

 *mambro wrote:*   

> Visto che siamo in tema qualcuno mi sa dire se in genere un dual core equivale in prestazioni a due processori separati sulla scheda madre? Lo so è la domanda più generica del mondo e magari anche OT ma in linea di massima cosa cosa cambia da un dual core a due processori?

 

no. nel modo più assoluto

non foss'altro perché si tratta di due core sulla stessa base, e quindi sullo stesso bus. i processori dual-core soffrono del collo di bottiglia rappresentato dal bus, cosa che prima non succedeva.

come se non bastasse Intel ha gestito malissimo la questione dual-core: da questione tecnica l'ha fatta diventare semplicemente una questione commerciale. si tratta di due die uniti, che condividono lo stesso bus, come dicevo, ma che condividono pure i registri. in pratica sono due processori che si azzoppano a vicenda. questa volta Intel ha toppato di brutto. non ho ancora letto nulla sulla soluzione AMD, ma mi hanno detto che loro hanno usato un po' di buon senso e non si sono abbandonati a cazzate simili.

il mio personalissimo parere è che questa strada non è più percorribile. secondo è indispensabile che si inizi ad abbassare le frequenze di funzionamento ed aumentare il rendimento dei processori, e soprattutto che si abbandoni questo set x86, che sta diventando ingestibile. il futuro sarà solo RISC

...ma queste sono idee mie

----------

## Dr.Dran

ehm... k.gothmog... stai parlando come un progettista di UltraSparc ahahahahhahahahahahahahahahahahahahahahahahhahaha  :Very Happy: 

----------

## kueitao

[quote="k.gothmog"] *mambro wrote:*   

>  ... si tratta di due die uniti, che condividono lo stesso bus, come dicevo, ma che condividono pure i registri. in pratica sono due processori che si azzoppano a vicenda... 

 

Non mi sembra tu abbia una sufficiente conoscenza dell'architettura dei processori Pentium Dual Core da poterti permettere una così gratuita critica ad Intel. Tanto per cominciare, e per finire anche, è una enorme falsità asserire che i dual core condividono gli stessi registri, cosa che tra l'altro non succede neanche nell'hyperthreading dove la separazione tra i processori logici non è altrettanto marcata.

Tra l'altro, perdonami, ma non hai neanche idea di cosa implichi l'esecuzione multi-threading reale. Come potrebbero mai essere eseguiti contemporaneamente due differenti threads se i registri fossero unici per i due processori logici?

Dai manuali Intel:

- Hyperthreading -

... HT Technology provides hardware multi-threading capability with a single physical package by using shared execution resources in a (single) processor core. Architecturally, an IA-32 processor that supports HT Technology, consists of two or more logical processors each of which has its own architectural state. Each logical processor consists of  a full set of IA-32 data registers, segment registers, control registers, debug registers and most of the MSR's. Each also has its own advanced programmable interrupt controller (APIC) ...

- Dual Core -

... Dual technology provides hardware multi-threading capability by using a single physical package that has two separate execution cores. ... 

Saluti.

fabio de francesco

----------

## .:chrome:.

 *kueitao wrote:*   

> Tanto per cominciare, e per finire anche, è una enorme falsità asserire che i dual core condividono gli stessi registri, cosa che tra l'altro non succede neanche nell'hyperthreading dove la separazione tra i processori logici non è altrettanto marcata

 a me sembra che tu non sappia distinguere tra le cose concrete e le vaccate che i commerciali scrivono per farsi pubblicità (il riferimento è ovviamente ai "manuali Intel").

Posso anche concederti quella sul dual core, ma sarà mia premura documentarmi a fondo e portarti qualcosa di concreto (non scritto da un commerciale, quindi) a riguardo.

L'Hyper Threading, tanto per cominciare e per finire, è una tecnica di multiplazione di una pipeline che già di per sé è superscalare. Dal momento che per la maggior parte dei sistemi operativi vale l'equazione "pipeline = processore", l'avere più punti di intresso/uscita da un'unica pipeline è praticamente come averne più di una.

Questa tecnica è possibile, così come è stata realizzata da Intel, solo su processori come Pentium-4 che definire superscalari mi sembra quasi riduttivo. Quello che voglio dire è che ovviamente che ogni partizione della pipeline avrà a disposizione un suo set di registri più o meno specifici, ma si tratta sempre e comuqnue di registri general purpose che fanno parte originariamente dall'unica pipeline reale di cui il processore dispone. Insomma: i registri dedicati sui dui processori logici è una balla mostruosa e colossale ottenuta combinando abilmente le parole, e per i boccaloni che devono comprare.

Ti ricordo che secondo i manuali Microsoft, Windows XP è il miglior sistema operativo che l'utente possa desiderare. completo sotto ogni aspetto, stabile e veloce come nessun altro.

Ti ricordo che secondo i manuali Sony, le schede video con memoria condivisa che vendono su alcuni portatili Vaio sono un'idea geniale, ed una cosa di cui vantarsi con chi ha memoria dedicata!

----------

## Kernel78

Premesso che non ho quasi idea di quello di cui state discutendo mi pare che la citazione riguardante all'HT significhi qualcosa di diverso da come la interpreti tu (mi sono permesso di spostare l'enfasi)

 *kueitao wrote:*   

> 
> 
> ... HT Technology provides hardware multi-threading capability with a single physical package by using shared execution resources in a (single) processor core. Architecturally, an IA-32 processor that supports HT Technology, consists of two or more logical processors each of which has its own architectural state. Each logical processor consists of  a full set of IA-32 data registers, segment registers, control registers, debug registers and most of the MSR's. Each also has its own advanced programmable interrupt controller (APIC) ...
> 
> 

 

Visto che ogni processore logico è composto da ... mi sembra abbastanza chiaro che spiega quali entità formano un processore logico, cosa ben diversa sarebbe dire che per ogni processore logico sono presenti nel processore fisico un set di bla bla bla ...

Quindi tutti quei componenti non sono separati almeno per quanto ne capisco io ...

----------

## .:chrome:.

 *Kernel78 wrote:*   

> Visto che ogni processore logico è composto da ... mi sembra abbastanza chiaro che spiega quali entità formano un processore logico, cosa ben diversa sarebbe dire che per ogni processore logico sono presenti nel processore fisico un set di bla bla bla

 

tu hai capito perfettamente il senso di quelle parole, e delle mie. se è vero che non hai idea di cosa si stesse parlando, complimenti davvero.

@kueitao: non ho ancora avuto tempo di documentarmi come dio comanda sul dual core, ma per quel poco che ho visto l'idea di fondo è esattamente la stessa di sopra.

----------

## neryo

 *k.gothmog wrote:*   

> 
> 
> il mio personalissimo parere è che questa strada non è più percorribile. secondo è indispensabile che si inizi ad abbassare le frequenze di funzionamento ed aumentare il rendimento dei processori, e soprattutto che si abbandoni questo set x86, che sta diventando ingestibile. il futuro sarà solo RISC
> 
> ...ma queste sono idee mie

 

non solo le tue... io sono pienamente daccordo con te... 

 *Quote:*   

> 
> 
> Dal momento che per la maggior parte dei sistemi operativi vale l'equazione "pipeline = processore", l'avere più punti di intresso/uscita da un'unica pipeline è praticamente come averne più di una. 

 

anche qui sono daccordo con te.. il numero di pipeline e' praticamente inteso come l'insieme delle parti di un processore che possono elaborare dati diversi nello stesso istante di clock, quindi in modo parallelo. Chiaramente per identificare le varie parti si ha un set di registri che servono per "ricordare" la fase precendente di ogni pipeline. In pratica in un processore ad Es. MIPS a 5 pipelines avremo un istruzione che e' in fase di fetch, una in decode, una in exec, una in mem, e una in wb (write back).. per farla semplice a regime, ad ogni clock viene elaborata completamente un istruzione, permettendo di avere frequenze di clock piu' basse.. Quindi ritornando a quello che dice k.gothmog se hai piu' istruzioni in ingresso e' come avere piu' processori, quindi come avere nel mio caso di esempio 10 pipelenes , il fatto di condividere dei registri e' una scelta possibilissima.. perche' i registri posti in fase di dec. possono essere selezionati accuratamente dai decoder in ogni fase garantendo di non leggere dati inconsistenti o sovrascrivere dati utili.. si tratta solamente di un maggior complessita' dei decoder.. niente di piu'! Poi ricordando che il numero dei registri in un processore a 32 bit MIPS e' 32.. quindi le possibilita' ci sono...   :Wink: 

----------

## .:chrome:.

 *neryo wrote:*   

> Es. MIPS a 5 pipelines avremo un istruzione che e' in fase di fetch, una in decode, una in exec, una in mem, e una in wb (write back).. 

 permettimi una curiosità: su che libri hai studiato? c'era forse di mezzo questo:

David A. Patterson, John L. Hennessy "Struttura, organizzazione, e progetto dei calcolatori"

----------

## neryo

 *k.gothmog wrote:*   

>  *neryo wrote:*   Es. MIPS a 5 pipelines avremo un istruzione che e' in fase di fetch, una in decode, una in exec, una in mem, e una in wb (write back)..  permettimi una curiosità: su che libri hai studiato? c'era forse di mezzo questo:
> 
> David A. Patterson, John L. Hennessy "Struttura, organizzazione, e progetto dei calcolatori"

 

si, la versione in inglese pero'.. "Computer architecture a quantitative approach  (2nd ed.)"   :Wink: 

----------

## .:chrome:.

 *neryo wrote:*   

> permettimi una curiosità: su che libri hai studiato? c'era forse di mezzo questo:
> 
> David A. Patterson, John L. Hennessy "Struttura, organizzazione, e progetto dei calcolatori"

 

si, la versione in inglese pero'.. "Computer architecture a quantitative approach  (2nd ed.)"   :Wink: [/quote]

si vede il taglio "pattersoniano"  :Very Happy: 

----------

## kueitao

Vabbè... Io invece ho studiato sul seguente e sui successivi 3, come hanno già fatto più di una generazione di ingegneri:

ftp://download.intel.com/design/Pentium4/manuals/25366518.pdf

Il testo che ho parzialmente riportato viene appunto dal suddetto documento.

Volete dimostrare che i suddetti, considerati la bibbia di riferimento per tutti i programmatori in Assembly IA-32 bits e per gli sviluppatori di compilatori per qualsiasi linguaggio, dicono cazzate commerciali? Bene... Dimostratelo!

Sono ancora in attesa di una contro-prova che dimostri come può esistere il multi-threading in una fantomatica architettura dual core che non abbia almeno i doppi registri dati... Nel frattempo mi basta sapere da quale autorevole fonte k.gothmog è venuto a sapere che i dual core condividono i registri.

Per il resto mi sembra di aver letto solo la dimostrazione che con i giochi di parole qualcuno ci sa fare...

Io continuo a scrivere codice basandomi sui suddetti manuali. Mai e poi mai le loro "cazzate commerciali" mi hanno impedito di sviluppare software multi-threading che appunto esegue contemporaneamente e che posso spostare in esecuzione verso una qualsiasi CPU logica esattamente come se si trovasse in un sistema SMP.

Che poi qualche diversa architettura sia più solida e performante nel MT su singolo processore fisico di quella Intel... Questo è abbastanza probabile. Il punto è che continuo a ribadire che 'sta condivisione di registri su cui si basa tutta la critica è una chiara falsità. Questo è quanto avevo evidenziato e le discussioni sulla pipeline superscalare non hanno nessuna pertinenza diretta con quanto sopra.

Saluti.

fabio de francesco

----------

## .:chrome:.

 *kueitao wrote:*   

> Volete dimostrare che i suddetti, considerati la bibbia di riferimento per tutti i programmatori in Assembly IA-32 bits e per gli sviluppatori di compilatori per qualsiasi linguaggio, dicono cazzate commerciali? Bene... Dimostratelo!

 

non mi sembra il caso di prendersela. come ti è già stato detto, tu hai solo male interpretato quello che Intel ha pubblicato.

 *kueitao wrote:*   

> Che poi qualche diversa architettura sia più solida e performante nel MT su singolo processore fisico di quella Intel... Questo è abbastanza probabile. Il punto è che continuo a ribadire che 'sta condivisione di registri su cui si basa tutta la critica è una chiara falsità. Questo è quanto avevo evidenziato e le discussioni sulla pipeline superscalare non hanno nessuna pertinenza diretta con quanto sopra.

 

ma io sto appunto dicendo che è proprio stato quello l'oggetto del malinteso

----------

