venerdì 7 maggio 2010

La bufala della doppia GPU.

Negli ultimi tempi abbiamo visto un discreto proliferare di notebook che adottano la doppia scheda video. Ogni riferimento ai MacBook Pro e' ovviamente voluto...

Con due GPU on board si pone il problema di come e quando effettuare lo switch tra una e l'altra. I primi Mac ad adottare questa soluzione hardware avevano a corredo una soluzione software che definire rozza e' usare un eufemismo: andare nel pannello di controllo, selezionare la GPU desiderata, fare il logoff.

Adesso il sistema e' un po' piu' sofisticato e non richiede intervento diretto da parte dell'utente, ma resta il problema che c'e' di mezzo un algoritmo che deve prendere la decisione e pare che non sempre prenda le decisioni giuste.

Questa soluzione ha un limite enorme: se un'applicazione necessita' della GPU piu' performante anche solo occasionalmente, questo comporta che la GPU resta accesa per tutto il tempo che l'applicazione e' in eseguzione, anche se minimizzata in background.

Di fatto questo approccio fa acqua da tutte le parti ed e' sostanzialmente da censurare. Non c'e' alcuna limitazione teorica o pratica nel realizzare una GPU che possa avere i consumi di una scheda entry level quando non servono prestazioni e al contempo fornire tutta la potenza necessaria quando richiesto. E questo senza le assurde limitazioni della soluzione Apple, che per altro Apple definisce breakthrough technology... quando invece trattasi di vaccata cosmica, come ampiamente dimostrato da AMD con le sue favolose HD 58xx ;)

Ma continuiamo pure a chiamarla breakthrough technology che altrimenti SJ e i suoi discepoli si offendono! XD

I misteri di Sunspider.

Non credo che il benchmark Sunspider necessiti di presentazioni. E' stato ormai preso come riferimento un po' da tutti i produttori di browser.

Dato che anche Microsoft ha "aderito" a questa corsa a chi ce l'ha piu' lung... veloce, ho provato a fare un confronto tra IE9 tech preview 2 e Opera 10.53 e Chrome 5.0.375.29.

Ma l'argomento del post non e' il confronto tra questi browser. Quello che mi ha lasciato un po' interdetto e' il comportamento di Sunspider su diverse macchine/sistemi operativi.

La prima cosa che ho notato e' che i risultati hanno una variabilita' notevole a seconda del sistema su cui gira il test.

Sul desktop con Windows 7 (quad core Q9450 2.66 GHz) i risultati sono entro una variabilita' inferiore al 5% e il risultato migliore che ho ottenuto e' stato di 399 ms, mentre mediamente ottengo 405 ms.

Sul MacBook con Windows 7 (dual core P8400 2.4 GHz) il migliore risultato e' stato di 634 ms e una varibilita' maggiore del 10% (mediamente ottengo 750 ms). 634 ms potrebbe anche sembrare accettabile date le diverse caratteristiche della CPU, ma come vedremo non e' cosi'.

In realta' il Sunspider e' composto da 9 gruppi di test che a loro volta hanno sotto aere per un totale di 26 test individuali. La prima cosa che volevo capire era quanti di questi sfruttano davvero la presenza del multicore, cosi' ho eseguito il test all'interno di una virtual machine del desktop. La VM so per certo che usa un singolo core e infatti dei 26 test ce ne sono due che hanno dato un risultato tra le 3 e le 4 volte peggiore rispetto al quad core. Tutti gli altri invece sono rimasti in un range di peggioramento tra lo 0% e il 10%.

E fino qua tutto bene, il problema e' che per questo tipo di test che esegue una quantita' sostanzialmente irrisoria di codice su una quantita' di dati altrettanto irrisoria, certe caratteristiche delle CPU non vengono sfruttate, col risultato che anche un dual core per portatile dovrebbe tenere testa ad un quad core. Ma nel caso del MacBook non e' cosi', mi aspettavo un risultato decisamente migliore di 634 ms. E soprattutto non mi spiego come mai il peggioramento rispetto al quad core sia equidistribuito su tutti i 26 test e non abbia invece una punta di peggioramento sui due test che sfruttano il multi core.

Per farvi un esempio: Super PI che e' mono thread, sul MacBook paga circa un 10%-15% di peggioramento rispetto al quad core, non certo il 50% o piu' come avviene per Sunspider.

Ho voluto provare sul Mac anche XP, pensando che magari fosse un problema di incompatibilita' tra Windows 7 e Boot Camp... risultato medio: 1.000 ms!
Ovvero molto peggio rispetto a Windows 7 (anche questo fatto non ha una spiegazione chiara).

La contro prova che Sunspider su un dual core dovrebbe ottenere risultati migliori l'ho avuta confrontando il risultato di Sunspider su OS X: sul MacBook ho ottenuto 426 che e' compatibile con le aspettative dopo aver letto su Arstechnica che su un Mac Pro quad core avevano ottenuto 389.

Per altro ho provato su uno Xeon 5355 2.66 GHz con Windows Server 2003 R2 ed ho ottenuto 330 che e' in linea con i dati di ArsTechnica (puo' essere che il Mac Pro da loro usato abbia una frequenza di clock un pelo inferiore).

Ho anche provato a testare sul MacBook la stessa VM provata sul desktop, e il decremento di prestazioni e' stato anche in questo caso inaspettato: miglior risultato 1.695 ms con medie intorno ai 2.000 ms e un risultato persino sopra ai 3.000 ms. It doesn't make sense!

Perche' sul quad core da macchina reale a virtuale si paga solo sui due test delle date, mentre sul Mac si paga in modo cosi' vistoso su tutti i test?

Perche' sul quadcore il delta tra varie eseguzioni del test e' limitato a meno del 5% mentre sul Mac si arriva a percentuali che toccano il 20%?

Considerate che il test di suo non impegna tantissimo la CPU, quindi non e' che altri processi possano alterare in modo significativo il risultato.

Che sia un baco presente in Sunspider e che si evidenzia solo con certi hardware/sistemi operativi? Che sia un qualche problema di Opera? Che sia un problema del sistema operativo? Che sia un problema di Boot Camp?

Per ora escludo sia un problema legato a Opera, ho provato con Chrome e la differenza % tra quad core e dual core e' compatibile coi risultati di Opera: 349 ms sul desktop e 686 ms sul Mac.

Sul desktop avrei voluto provare anche sotto Ubuntu 10.04 ma Opera non ha ancora rilasciato la 10.53, appena esce provo. Intanto ho provato Chrome che ha ottenuto 399 ms e sotto Windows 7 349 ms, valori compatibili con la normale varianza d'errore di questo tipo di test e col fatto che sicuramente qualcosina cambia tra Windows e Linux.

Se avete un dual core sarei curioso di sapere quale sia il miglior risultato che ottenete (specificate anche la frequenza di clock della CPU).

Per adesso Sunspider conferma quello che ho sempre pensato: ci sono le bugie, le grandi bugie e i benchmark ;)


Aggiornamento: neanche finito di pubblicare il post che dopo una altro giro di una decina di eseguizioni del test sul Mac e' spuntato un inaspettato 499 ms. Mentre tutti gli altri si erano attestati da 640 ms in su'.

mercoledì 5 maggio 2010

Snow Leopard... qualità sopraffina.

Ecco come si presenta Snow Leopard dopo l'aggiornamento alla versione 10.6.3...


...chiaramente si tratta di un baco introdotto nel driver della scheda Intel GMA X3100... alla faccia della superiorità dei Mac che "sono una perfetta combinazione di hardware e software".

Il problema è persistente. Dopo il riavvio sembra tutto a posto salvo ricomparire in modo random e "infettare" qualunque finestra già aperta o che si apre successivamente.

Sul Finder oltre all'artefatto che si vede in alto a destra, in corrispondenza della cartella "varie", si creano artefatti anche intorno alle label delle icone del dock.

It just works.