PresentMon per testare le GPU in DirectX 12, OpenGL e Vulkan

Abbiamo iniziato a usare PresentMon al posto di Fraps. Questo software, di non facile utilizzo, ci permette di dissezionare le prestazioni delle schede video con i titoli DirectX 12, OpenGL e Vulkan.

Avatar di Igor Wallossek

a cura di Igor Wallossek

NOTA: I test che saranno svolti dai nostri laboratori in Germania e USA useranno PresentMon, mentre per alcune recensioni del laboratorio italiano gli strumenti potranno cambiare. Date sempre un'occhiata alla scheda dei benchmark per sapere precisamente gli strumenti adottati.

L'introduzione delle DirectX 12, della Microsoft Universal Windows Platform e di Vulkan - API nate sulla base di AMD Mantle - ci ha messo di fronte ad un problema: non avevamo più uno strumento affidabile per misurare le prestazioni. Fraps funziona solo con le DirectX 11 e non è così affidabile come pensano alcuni appassionati.

Di conseguenza, il tempismo con cui è arrivato PresentMon, realizzato da Andrew Luritzen e liberamente disponibile su GitHub, è risultato perfetto. Questo software controlla i comandi presenti nell'insieme degli eventi tracciati da Windows e registra un certo numero d'informazioni su di essi all'interno di in un file CSV per consentirne l'analisi.

PresentMon, però, soggiace alle sue stesse limitazioni tecniche perché opera nello stesso punto della pipeline grafica in cui funziona Fraps. Di conseguenza non può rimpiazzare completamente strumenti come FCAT all'interno della nostra suite. Ciò che rende così interessante PresentMon è la sua compatibilità non solo con le DirectX 11 ma anche con DX12, OpenGL e Vulkan.

00 PresentMon64

Clicca per ingrandire

Il suo handicap maggiore è l'interfaccia a riga di comando, perché può volerci molto tempo per trovare la giusta combinazione di impostazioni necessarie per generare l'informazione di cui si ha bisogno. Di default non è impostato per restituirvi il dato di cui avete bisogno, ed è di questo problema che ci occupiamo in questo articolo.

L'interfaccia grafica (GUI) di PresentMon

Abbiamo deciso di sviluppare un software che fosse in grado di avviare PresentMon, impostarne i parametri e raccogliere i dati dei sensori contemporaneamente alla registrazione delle prestazioni.

01 PresentMon GUI

Clicca per ingrandire

Nell'immagine sopra è presente una lista di giochi usati frequentemente per i benchmark, ognuno con il suo profilo memorizzato. PresentMon applica a ognuno i parametri che abbiamo preimpostato quindi, ad esempio, un test può durare per tre minuti e poi fermarsi, mentre un altro viene avviato e interrotto usando un apposito tasto (hotkey).

Semplificare la raccolta dei dati

PresentMon non è impostato per raccogliere i dati dai vari sensori mentre registra le informazioni prestazionali. Questa possibilità è invece offerta da AIDA64, software realizzato da FinalWire. Ci affidiamo alla versione Engineer di AIDA64 per ottenere i dati di un certo numero di processi host e statistiche di carattere grafico. Volete correlare l'uso della GPU con il frame rate a un certo punto del test? Si può. La latenza e l'overhead sono mantenuti ad un livello minimo perché l'approccio di AIDA64 è diverso da quello di strumenti come HWiNFO che usano delle DLL per la loro interfaccia.

Per minimizzare l'impatto che deriverebbe dalla scrittura dei dati su disco, lasciamo questo secondo log (tutto sommato molto contenuto) sulla RAM fino a quando non viene chiuso il file log di PresentMon. Siccome quest'ultimo non usa un controllo temporale - una sfortuna - ordiniamo il tutto mettendo per prima la nostra registrazione, poi il log di PresentMon, e tra loro (in parallelo) il tempo tracciato. Questo è necessario anche per confrontare misurazioni esterne come quelle del nostro oscilloscopio.

Analizzare i dati e presentarli al meglio

Tutte le nostre rilevazioni relative ad ogni benchmark coinvolgono un'enorme mole di dati che necessita di essere ordinata. Per aiutarci in questo compito usiamo un altro programma sviluppato da noi che combina i due file di log e si occupa di tutti i calcoli necessari per realizzare i grafici. Non sarebbe possibile fare tutto ciò in Excel per via della complessità e del numero di passaggi necessari.

02 Interpreter

Clicca per ingrandire

Grazie al nostro interpreter del file di log, giunto alla terza versione, possiamo calcolare velocemente quello che ci interessa e anche aggiungere nuovi grafici se necessario. Analizzeremo più approfonditamente quali aspetti prendiamo in considerazione tramite il test di due schede video con un gioco in DX12.

Il nostro scopo è fare chiarezza sulle informazioni che generiamo. Senza un'approfondita comprensione di ciò che dicono i grafici è possibile arrivare a conclusioni sbagliate. In recensioni future ci vedrete fare riferimento a questo articolo per essere sicuri che i nostri processi e le nostre procedure siano chiare.

01 FPS Bar Charts

Clicca per ingrandire

Il grafico a barre qui sopra mostra gli FPS minimi, massimi e medi che sono sì importanti ma non ci dicono assolutamente nulla della fluidità percepita durante un'esperienza di gioco e neppure ci danno informazioni puntuali e precise sulla costanza con i frame sono renderizzati. Per avere queste informazioni abbiamo necessità di più dati.

Due schede, due sistemi e un benchmark

Questa prova non è fatta per confrontare fra loro la MSI GTX1060 Gaming X 6 GB e e la RX480 Gaming X 8 GB. Invece, useremo i risultati di entrambe le schede video per spiegare come svolgiamo le misurazioni e come le valutiamo.

03 Intro

Usare un solo benchmark semplifica l'analisi, quindi ci siamo concentrati su Hitman testandolo con entrambe le schede video, usando tanto le DX11 quanto le DX12, su due diversi sistemi.

  Enthusiast System Mainstream PC
CPU Intel Core i7-6950X @ 4.2 GHz AMD FX-8350 @ 4 GHz
Raffreddamento Open-loop water-cooling be quiet! Dark Rock Pro 3
Memoria 16 GB DDR4-3400 16 GB DDR3-1866
Motherboard MSI X99A Gaming Pro MSI Gaming 970
Storage 1TB Intel SSD 530
Sistema operativo Windows 10 Build 1607 (10.0.14393.51)
Driver grafico Crimson 16.8.2

GeForce 372.54