PDA

View Full Version : BOINC e cache processore... non la vede tutta!


Hazon
20-12-2007, 18:23
Ho notato ora che quando visualizzo le caratteristiche del mio pc in BOINC la cache del processore me la rileva a 512 Kb (488.28 Kb) in realtà il mio processore ne ha 1 Mb x ogni core (non 1 Mb diviso per i due core).
Come è possibile?

iuccio
20-12-2007, 18:57
Anche se può sembrare strano, Windows Xp non riesce a sfruttare al meglio le potenzialità di calcolo del processore del computer. Le impostazioni del sistema operativo per quanto riguarda la gestione della cache di secondo livello (L2) della Cpu sono molto conservative. Ricordiamo che la cache L2 è una piccola e velocissima memoria statica integrata nel core del processore. Essa funge da memoria-cuscinetto memorizzando una certa quantità di dati al fine di far diminuire le transazioni tra la Cpu e la lenta memoria Ram di sistema. È possibile, inserendo una apposita chiave nel registro di configurazione di sistema, migliorare la resa della Cpu in modo che Windows Xp ne sfrutti le potenzialità al 100%.

Aprendo il registro di configurazione da Start> Esegui> Regedit dovremo seguire il percorso: HKEY_LOCALJv1ACHINE\ SYSTEM\ Current ControlSet\ ControK Session Manager\ Memory Management.

Una volta raggiunta la chiave bisogna operare un click destro sullo sfondo della finestra a destra e inserire Nuovo>Valore Dword, una volta creato "Nuovo valore #1 " bisognerà rinominarlo in SecondLevelDataCache.

Non occorre ovviamente eseguire questa operazione se il valore è già presente. Con un doppio clic sul valore SecondLevelDataCache ci verrà richiesto di inserire un valore esadecimale con cui indicheremo al sistema operativo l'esatto dell'ammontare della cache L2 del processore in modo che venga ottimizzata la gestione delle risorse di calcolo e del multitasking su questo valore. Che valore inserire?

Se la Cpu dispone di una cache L2 di 128 Kbyte inseriremo il valore 50,
100 se dispone di 256 Kbyte, 200 se dispone di 512 Kbyte, 400 se dispone di 1 Mbyte e 800 se dispone di 2 Mbyte. Per determinare l'ammontare della cache L2 del nostro processore è sufficiente avviare Cpu-Z (www.cpuid.org/cpuz.php) e guardare la voce Level 2 nel riquadro Cache. Prove pratiche hanno dimostrato che dopo questa ottimizzazione la temperatura della Cpu, quando soggetta a fasi intensive di calcolo, può salire anche di 2°, segno inequivocabile dell'efficacia della ottimizzazione.

Hazon
20-12-2007, 19:44
Anche se può sembrare strano, Windows Xp non riesce a sfruttare al meglio le potenzialità di calcolo del processore del computer. Le impostazioni del sistema operativo per quanto riguarda la gestione della cache di secondo livello (L2) della Cpu sono molto conservative. Ricordiamo che la cache L2 è una piccola e velocissima memoria statica integrata nel core del processore. Essa funge da memoria-cuscinetto memorizzando una certa quantità di dati al fine di far diminuire le transazioni tra la Cpu e la lenta memoria Ram di sistema. È possibile, inserendo una apposita chiave nel registro di configurazione di sistema, migliorare la resa della Cpu in modo che Windows Xp ne sfrutti le potenzialità al 100%.

Aprendo il registro di configurazione da Start> Esegui> Regedit dovremo seguire il percorso: HKEY_LOCALJv1ACHINE\ SYSTEM\ Current ControlSet\ ControK Session Manager\ Memory Management.

Una volta raggiunta la chiave bisogna operare un click destro sullo sfondo della finestra a destra e inserire Nuovo>Valore Dword, una volta creato "Nuovo valore #1 " bisognerà rinominarlo in SecondLevelDataCache.

Non occorre ovviamente eseguire questa operazione se il valore è già presente. Con un doppio clic sul valore SecondLevelDataCache ci verrà richiesto di inserire un valore esadecimale con cui indicheremo al sistema operativo l'esatto dell'ammontare della cache L2 del processore in modo che venga ottimizzata la gestione delle risorse di calcolo e del multitasking su questo valore. Che valore inserire?

Se la Cpu dispone di una cache L2 di 128 Kbyte inseriremo il valore 50,
100 se dispone di 256 Kbyte, 200 se dispone di 512 Kbyte, 400 se dispone di 1 Mbyte e 800 se dispone di 2 Mbyte. Per determinare l'ammontare della cache L2 del nostro processore è sufficiente avviare Cpu-Z (www.cpuid.org/cpuz.php) e guardare la voce Level 2 nel riquadro Cache. Prove pratiche hanno dimostrato che dopo questa ottimizzazione la temperatura della Cpu, quando soggetta a fasi intensive di calcolo, può salire anche di 2°, segno inequivocabile dell'efficacia della ottimizzazione.

:eek:
...ma quante ne sai?!?!
Solo che io uso Windows Vista, posso agire allo stesso modo?
ora do un'occhiata...

Hazon
20-12-2007, 19:47
No purtroppo non trovo la chiave, il percorso non è uguale.:cry:

iuccio
20-12-2007, 19:48
Pfff ma scherzi? Io le so TUTTE!

Oh, ho scritto su google "cache processore registro" e poi ho fatto copia incolla

gabi.2437
20-12-2007, 20:24
Magari Vista è già a posto

Fra_cool
20-12-2007, 21:56
Anche se può sembrare strano...

:muro: , è proprio assurdo!

Cioé, tanto marketing sulla Cache L2 e poi di default resta castrata? Ma i vari bench che mostrano i vantaggi della L2... sono fatti su pc con questa ottimizzazione??

Comunque, grazie per l'info! E aggiungo di usare il valore 1000 per L2 da 4Mb (ad es. Conroe), oltre alla possibilità di inserire anche il valore in forma decimale ;)

Ciao, Frà!

edit: nonostante questa modifica al registro, anche a me visualizzando il ComputerID mi da lo stesso valore di 488... :(

ri-edit: second questo link M$ (http://support.microsoft.com/kb/183063/it) la modifica al registro influenza solo sistemi con processore PII o più vecchi :|

fantalorenzo
20-12-2007, 23:44
anche io ho seguito alla lettera ma continua a vedere 488 :(

GHz
20-12-2007, 23:56
Secondo me è solo un problema di riconoscimento, e non influisce sulle prestazioni. Anche perchè la cache è gestita in hardware dal processore e non dal sistema operativo, quindi non è che ci si può andare a scrivere dei dati, ma è la cpu che la sfrutta per fare il caching dei dati e delle istruzioni da elaborare.
In conclusione non mi preoccuperei del valore riportato da boinc, in quanto è solo un indicazione a fini statistici. Del mio quad riporta solo 244.14 KB eppure va alla grandissima :asd: Se mi sbaglio correggetemi......

iuccio
21-12-2007, 07:57
Marco71, io ti evoco! :sofico:

Il Capitano
21-12-2007, 10:54
Marco71, io ti evoco! :sofico:

:rotfl::rotfl::rotfl:

Marco71
21-12-2007, 11:07
Secondo me è solo un problema di riconoscimento, e non influisce sulle prestazioni. Anche perchè la cache è gestita in hardware dal processore e non dal sistema operativo, quindi non è che ci si può andare a scrivere dei dati, ma è la cpu che la sfrutta per fare il caching dei dati e delle istruzioni da elaborare.
In conclusione non mi preoccuperei del valore riportato da boinc, in quanto è solo un indicazione a fini statistici. Del mio quad riporta solo 244.14 KB eppure va alla grandissima :asd: Se mi sbaglio correggetemi......

...slurp..sono curioso, che "Beowulf" ammazza chimere hai acquistato ?
Un Q6600 ?
Quanto al famoso ed annoso problema della quantità di memoria L2 ho paura che non sia ininfluente...
Tra l'altro se qualcuno di voi utilizza computer per B.O.I.N.C con sistemi operativi Linux avrà notato che invece viene riportato l'ammontare esatto di memoria cache L2 (proprio esatto al KiB).
Discorso diverso ahinoi con i sistemi operativi di "classe N.T" per i quali ho paura che il valore di default di 256 KiB (riportato in maniera affetta da errori di arrotondamento/troncamento quanto meno) sia un retaggio che discende proprio da Windows N.T per sistemi con processore Intel...
Sia per i Pentium con cache memory di secondo livello esterna su motherboard, sia per i Pentium PRO con memoria cache L2 in dimensioni multiple di 256KiB, enterocontenuta nel package a doppia cavità.
Macroscopicamente ciò che differenzia i sistemi operativi Microsoft da quelli Linux è proprio il famoso registro di configurazione.
Stante poi il fatto che i clients di analisi vengono mandati in esecuzione come processi dal sistema operativo, è sì vero che le gerarchie di memoria cache vengono gestite in maniera "autonoma" dall'hardware del controllore interno al processore ma è anche vero che se il sistema operativo non è informato sulla corretta dimensione della memoria disponibile sicuramente potrebbero esserci dei side effects (aumento del tasso di miss per la L2, caricamento parziale del set di dati su cui B.O.I.N.C elabora ecc.).
Linux non a caso introduce molto meno overhead nella gestione dei processi oltre che del number crunching che interessa a noi, B.O.I.N.C.
Grazie.

Marco71.

Marco71
21-12-2007, 11:10
:rotfl::rotfl::rotfl:

...per chi non ricorda, il nome di un famoso genio invocato con l'unione di due semi metà di un anello...

Grazie per la considerazione iuccio...
Ave Capitano...

:ave: :ave: :ave: :ave: :ave: :ave:

Marco71.

Marco71
21-12-2007, 11:26
...il problema del non corretto riconoscimento con sistemi operativi Microsoft di classe XP è più "grave" del previsto...
Ed è a carico di un modulo chiave per il sistema operativo...l'H.A.L
Hardware Abstraction Layer in esecuzione sul computer...
Il sistema operativo tramite l'esecuzione dell'istruzione CPUID (per i processori che ne sono dotati, escluse quindi le prime generazioni di 80486, gli 80386 ecc.) rileva le features implementate dal processore e le comunica all'H.A.L.
Se il corretto ammontare della memoria cache L2 non è determinabile dall'H.A.L, viene impostato per default il valore di 256KiB nel registro di configurazione...
Ed il "brutto" è che ogni scrittura di un valore "custom" da parte di un utente viene posto in bypass e normalizzato a 256Kib...sigh...
Potete confermare che anche Vista soffre del medesimo problema ?
E' sconfortante che Microsoft non si sia mai posta questo "piccolo" problema...
Nella sua knowledge base è a conoscenza del problema...l'unica cosa che dice in maniera molto candida è che il delta di prestazioni secondo lei, è quantificabile in un 2%...
Triste...
Grazie.

Marco71.

Hazon
21-12-2007, 11:35
Io posso confermarti che con BOINC sotto Vista mi rileva la cache a 512 Kb (488.28 Kb) in realtà il mio processore ne ha 1 Mb x ogni core. Fuori da BOINC come posso constatare quanta cache rileva il S.O.? Tramite CPUZ la vedo correttamente a 1 Mb.

Effelle
21-12-2007, 11:43
ven 21 dic 2007 12:45:05 CET||Benchmark results:
ven 21 dic 2007 12:45:05 CET|| Number of CPUs: 1
ven 21 dic 2007 12:45:05 CET|| 888 floating point MIPS (Whetstone) per CPU
ven 21 dic 2007 12:45:05 CET|| 2629 integer MIPS (Dhrystone) per CPU

Il benchmark di Boinc su un Linux a 64 bit non mi segnala la cache.
Forse dovrei editare qualche file xml, ma non ho ancora capito come farlo. :fagiano:
Qualcuno sa qualcosa a questo proposito?

Marco71
21-12-2007, 11:51
...interno a B.O.I.N.C non indica il valore della dimensione della L2 cache memory.
Per "vederlo" devi utilizzare l'account di B.O.I.N.C sul particolare progetto di calcolo distribuito cui partecipi...alla voce "computers"...
Thanks.

Marco71.

Effelle
21-12-2007, 11:53
...interno a B.O.I.N.C non indica il valore della dimensione della L2 cache memory.
Per "vederlo" devi utilizzare l'account di B.O.I.N.C sul particolare progetto di calcolo distribuito cui partecipi...alla voce "computers"...
Thanks.

Marco71.
Grazie. :D

:fagiano: :fagiano: :fagiano:

Marco71
21-12-2007, 11:57
Io posso confermarti che con BOINC sotto Vista mi rileva la cache a 512 Kb (488.28 Kb) in realtà il mio processore ne ha 1 Mb x ogni core. Fuori da BOINC come posso constatare quanta cache rileva il S.O.? Tramite CPUZ la vedo correttamente a 1 Mb.

...allora il "problema" si è esteso anche agli H.A.L utilizzati da Vista...
Tutti i programmi "esterni" al sistema operativo come C.P.U-Z, il tool di identificazione di Intel ecc. si affidano alla esecuzione della istruzione CPUID che riporta nel registro EAX una stringa di bit (delle flags) in base alla quale poi è desumibile tutto il set di features implementate dal particolare processore.
Il sistema operativo in maniera erronea però continua ad avere una informazione non corretta sull'ammontare effettivo...
Mi stupisco che Microsoft abbia sempre minimizzato su un "piccolo" dettaglio come questo...
Grazie.

Marco71.

SickBoy88
21-12-2007, 12:05
Ho notato questo post ed ho deciso di dare un okkiata sul mio procio..
Sono andato nel registro ed ho notato che la mia cache di livello 2 era settata a zero :eek: Come può essere possibile? significa che nn la utilizzavo?
Adesso l'ho messa a 512kb come visto da CPU-Z.. speriamo vada un pochetto meglio. Forza criceto.. gira! gira! :D :D

CPU-Z mi dice
L1 data 64kb
L1 instructions 64 kb
L2 512 kb

Ma se guardo boinc mi dice
Cache 976.56 KB

Che significa? io nn ce n'ho mica 976kb...

Hazon
21-12-2007, 12:42
Mi stupisco che Microsoft abbia sempre minimizzato su un "piccolo" dettaglio come questo...


Marco71.
Ho optato per l'opteron 165 anche perchè ha la cache a 1 Mb e sapere che il S.O. non la sfrutta ti fa inc*****e. :muro: :mad:

iuccio
21-12-2007, 13:19
Ho notato questo post ed ho deciso di dare un okkiata sul mio procio..
Sono andato nel registro ed ho notato che la mia cache di livello 2 era settata a zero :eek: Come può essere possibile? significa che nn la utilizzavo?
Adesso l'ho messa a 512kb come visto da CPU-Z.. speriamo vada un pochetto meglio. Forza criceto.. gira! gira! :D :D

CPU-Z mi dice
L1 data 64kb
L1 instructions 64 kb
L2 512 kb

Ma se guardo boinc mi dice
Cache 976.56 KB

Che significa? io nn ce n'ho mica 976kb...

Non so a memoria la conversione esadecimale, ma mi sa che hai scritto 512 in esadecimale e quindi in decimale risulta 976. Prova a scrivere 200...

Marco71
21-12-2007, 13:24
Ho notato questo post ed ho deciso di dare un okkiata sul mio procio..
Sono andato nel registro ed ho notato che la mia cache di livello 2 era settata a zero :eek: Come può essere possibile? significa che nn la utilizzavo?
Adesso l'ho messa a 512kb come visto da CPU-Z.. speriamo vada un pochetto meglio. Forza criceto.. gira! gira! :D :D

CPU-Z mi dice
L1 data 64kb
L1 instructions 64 kb
L2 512 kb

Ma se guardo boinc mi dice
Cache 976.56 KB

Che significa? io nn ce n'ho mica 976kb...

...Windows XP imposta a "0" tale valore per tentare l'autosensing del valore di memoria cache disponibile.
Evidentemente gli H.A.L (sia per computer uniprocessor che per sistemi S.M.P) del sistema operativo non sono in grado di interpretare né i dati forniti dal B.I.O.S e né tanto meno quelli provenienti dall'esecuzione della istruzione CPUID.
A questo punto voglio documentarmi su come Linux esegue il sensing di questo importante parametro.
Non voglio credere che il kernel, lo scheduler di Windows XP "funzioni" allo stato dell'arte prescindendo dal sapere nei dettagli le features hardware di cui dispone il processore...
Parafrasando il titolo di un fortunato film..."Non mi/ci resta che piangere"...
Adesso potete anche capire il perché, di norma e regola, tutti i sistemi di tipo cluster, molti supercomputer, usano un certo pinguino come sistema operativo.
Grazie.

Marco71.

Marco71
21-12-2007, 13:27
Non so a memoria la conversione esadecimale, ma mi sa che hai scritto 512 in esadecimale e quindi in decimale risulta 976. Prova a scrivere 200...

...ciao iuccio...
E' possibile specificare il valore anche in base 10.
Comunque ahimè scrivere manualmente tale valore è ininfluente...
Il sistema operativo esegue l'algoritmo di rilevazione prescindendo da ciò che è scritto nel valore del registro di configurazione...
Grazie.

Marco71.

SickBoy88
21-12-2007, 13:36
Avevo messo 200 infatti.
Cmq.. se il rilevamento non tiene conto di quello che c'è scritto nel registro.. rimane un interrogativo: Il pc, 'sto livello 2, lo usa o non lo usa? :O

Marco71
21-12-2007, 13:53
...lo utilizza...
Il problema a questo punto è quantificare come il gestore di memoria del kernel quantifica la presenza del livello 2 o superiore di memoria cache.
Stando a quanto afferma Microsoft (però questi dati non mi convincono molto dato che si fa esplicito riferimento alla memoria L2 cache a mappatura diretta dei Pentium II...) l'influenza del quantitativo di L2 cache è risibile (pochi punti di percentuale)...
Per quantificare il problema serve un programma tipo VTune di Intel per conoscere in che modo i client di analisi B.O.I.N.C utilizzano la memoria cache.
Sottostimando il quantitativo realmente disponibile, il "traffico" da e verso la memoria centrale potrebbe aumentare.
Microsoft mi dovrebbe però spiegare quali routine interne agli H.A.L "falliscono" nel rilevare l'ammontare della memoria cache L2 e soprattutto perché non è stato corretto almeno quando fu rilasciato il SP2.
Grazie.

Marco71.

iuccio
21-12-2007, 14:39
A questo punto non ci resta che contattare il servizio clienti Microsoft......

Effelle
21-12-2007, 14:46
A questo punto non ci resta che contattare il servizio clienti Microsoft......

:sbonk:

GT82
21-12-2007, 22:32
Ho notato questo post ed ho deciso di dare un okkiata sul mio procio..
Sono andato nel registro ed ho notato che la mia cache di livello 2 era settata a zero :eek: Come può essere possibile? significa che nn la utilizzavo?
Adesso l'ho messa a 512kb come visto da CPU-Z.. speriamo vada un pochetto meglio. Forza criceto.. gira! gira! :D :D

CPU-Z mi dice
L1 data 64kb
L1 instructions 64 kb
L2 512 kb

Ma se guardo boinc mi dice
Cache 976.56 KB

Che significa? io nn ce n'ho mica 976kb...

Io ho un XP 2400 Thoroughbred (quindi 256 Kb L2) anche nel mio cmq Boinc vede 976.56.... molto strana sta cosa:mbe:

nicko_t
23-12-2007, 13:05
Boinc su XP sp2 ne rileva anche a me 976.56, che è quasi corretto per un celeron M 410, mentre su Linux 64-bit ne rileva solo 512Kb, quando il mio Turion TL-52 ne ha 2x512 non condivisa (forse è per quello che sbaglia, comunque il problema, se lo è, è di Boinc, Linux lo sa quanta ce n'è, se vado in /proc/cpuinfo)

Una parte del mistero è (forse) chiarita: questo numero magico di 976,56 kB corrisponde esattamente ad 1Mb inteso come 1.000.000 byte (sempre che l'informazione rilevata sia corretta, credevo (speravo) che solo negli hard-disk barassero su questa sottile differenza :mad:), resta però il fatto che se GT82 non ce l'ha 1Mb, il rilevamento di Boinc è ampiamente sballato

giopro
04-01-2008, 17:22
Salve a tutti, vorrei riportare i valori che leggo io:

Core2 6600 (quello in firma) cache 488.28, letti si su Seti, Rosetta Ufluids e NanoHive.

La cosa che mi ha incuriosito è che al lavoro uso Mac e questi sono i valori:

CPU type Power Macintosh
Power Macintosh [Power Macintosh Model PowerMac7,3] [AltiVec]
Number of CPUs 2
Operating System Darwin
8.11.0
Memory 2048 MB
Cache 976.56 KB

Visto che ha 512Kb per core vuol dire che anche su OSX sballa i valori? :confused:

Ciao :)

Navigator2
09-01-2008, 13:23
Ciao,
ho una domanda anche io.Interessando anche io a questa faccenda della L2, infatti io ho un dual xeon con 512 Kb di cache e su boinc ne vedo solo 244.14KB.
Poi una domanda ma se avessi una cpu con 512Kb di L2 e 2Mb di L3, quest'ultima mi servirebbe per l'elaborazione??