Category Archives: Software

Il driver Nvidia e il problema di num_physpages

A luglio Linus Torvald rimosse la variabile num_physpages dalla versione 3.11 del kernel di Linux. Questa decisione ha però determinato una conflittualità tra il codice sorgente del driver fornito da Nvidia e il kernel stesso. La num_physpages era definita nel gestore mm della memoria di Linux.

Oggi, l’ultimo driver stabile di Nvidia è il 319.60 e ci sono ancora i riferimenti alla variabile suddetta nel file d’intestazione nv-linux.h. Se anche voi avete una distribuzione con il kernel 3.11 (o più recente) e tentate, come ho fatto io, di compilare il driver per le schede video, otterrete il seguente messaggio di errore:


In file included from /tmp/selfgz4790/NVIDIA-Linux-x86_64-319.49/kernel/os-interface.c:26:0:
   /tmp/selfgz4790/NVIDIA-Linux-x86_64-319.49/kernel/os-interface.c: In function ‘os_get_system_memory_size’:
   /tmp/selfgz4790/NVIDIA-Linux-x86_64-319.49/kernel/nv-linux.h:1040:41: error: ‘num_physpages’ undeclared (first use in this function)
    #define NV_NUM_PHYSPAGES                num_physpages
                                            ^

Come già detto, num_physpages è stata tolta da Torvalds, quindi per il momento non c’è altra soluzione che correggere il file nv-linux.h del driver con una patch oppure un editor di testo. Potete scaricare la patch dalla Rete, ma si tratta di un file specifico per una particolare versione del driver di Nvidia che dovreste adattare alla vostra situazione. A questo indirizzo troverete le istruzioni per procedere nel modo corretto. Oltre a servirvi di una patch, in alternativa potete modificare il file nv-linux.h durante l’installazione del driver, per esempio seguendo questa procedura:

  1. Eseguite l’installer di Nvidia con l’opzione -x, il comando decomprirà l’archivio che contiene il codice sorgente del driver.
  2. Modificate il file nv-linux.h, che trovate nella directory kernel, con un editor, vi oppure gedit vanno benissimo.
  3. Cercate la riga che ha la seguente definizione in linguaggio C #define NV_NUM_PHYSPAGES   num_physpages, dovreste trovarla inserita fra altre definizioni, esattamente come nell’esempio sottostante:
    
    #if !defined(NV_VMWARE):
    #define NV_NUM_PHYSPAGES                num_physpages
    #define NV_GET_CURRENT_PROCESS()        current->tgid
    #define NV_IN_ATOMIC()                  in_atomic()
    
  4. Dopo la riga corrispondente all’istruzione condizionale #if, ma prima della definizione #define NV_GET_CURRENT_PROCESS ecc. dovete creare un nuovo blocco che corrisponda al seguente codice per il preprocessore C:
    
    #if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(3, 11, 0)</p>
    #define NV_NUM_PHYSPAGES                get_num_physpages()
    #else</p>
    #define NV_NUM_PHYSPAGES                num_physpages
    #endif
    
  5. Ultimate le vostre modifiche, avrete esattamente questo:
    
    #if !defined(NV_VMWARE)
    #if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(3, 11, 0)</p>
    #define NV_NUM_PHYSPAGES                get_num_physpages()
    #else
    #define NV_NUM_PHYSPAGES                num_physpages
    #endif</p>
    #define NV_GET_CURRENT_PROCESS()        current-&gt;tgid
    #define NV_IN_ATOMIC()
    
  6. Potete ora chiudere l’editor ed eseguire il comando nvidia-installer che trovate nella directory principale del driver.

Ubuntu 13.10 è in circolazione da poco tempo e utilizza un kernel recentissimo che non è compatibile con il driver per le schede video GeForce. Il bug dovrebbe essere ormai già noto ai programmatori di Nvidia, anche se il problema non sembra molto diffuso fra gli utenti. In questo caso è bastato cercare la patch con un motore di ricerca, usando i termini num_physpage, kernel 3.11 e Nvidia. Vista l’importanza raggiunta da Linux, e in particolare dalla distribuzione Ubuntu, mi aspetto da un giorno all’altro un driver che sia compatibile con il recente kernel 3.11 e 3.12.

Nouveau e CPUFreq: Geforce 9800 supera GTX680

Il recente test di Michael Larabel sul driver AMD open source, fra le due versione del kernel 3.11 e 3.12 (da git), ha reso evidente un miglioramento delle prestazioni del computer. Lo stesso test è stato ripetuto con il driver Nouveau, però in questo caso il guadagno è risultato minimo con le schede denominate Kepler e Fermi. Per quale motivo? Il motivo è che il driver open source non supporta ancora il reclock, ovvero la selezione del livello delle prestazioni della GPU.

I cambiamenti nel codice di CPUFreq (il modulo che governa la frequenza d’esercizio della CPU) hanno giovato alle GPU Radeon, ma non a tutte quelle di marca nVidia. Da tempo c’è la possibilità di fare “re-clocking” delle schede grafiche GeForce: fino alla serie 7 il reclock avveniva in fase di boot e non interessava la velocità della VRAM; a partire dalla serie 8, i modelli M dei portatili avevano la capacità di riaggiustare sia il clock della RAM video sia quello del core della GPU. Questa modifica fu decisa per ridurre i consumi energetici quando la GPU si trovava per lo più in riposo. Il clock era impostato a una velocità intermedia fra il valore massimo e quello minimo d’esercizio. Con le GeForce 200 il clock al boot era impostato a ⅓ della velocità massima della GPU. Con le schede video denominate Fermi (dalla serie 400 alla 600) le prestazioni sono peggiorate perché il clock di default è al 10% della frequenza massima d’esercizio e non c’è ancora modo di fare reclock usando il driver Nouveau. Per questo motivo nel test di Michael la scheda 9800GTX ha superato una GeForce GTX680.

PTS: Nouveau bench con Xonotic
PTS: Nouveau bench con Xonotic

Debunking di giochi per Windows

Vorrei sfatare la credenza, assai diffusa, della inferiorità di Linux rispetto a Windows nell’attività ludica col computer. Dopo molti anni passati a smanettare con i sistemi operativi open source, ho deciso di scrivere un debunking del falso mito “Windows è migliore di Linux” perché ritengo che i vecchi pregiudizi siano ormai superati, si diceva e si dice ancora oggi che il sistema operativo di Microsoft ha più videogiochi, possiede API specifiche per programmare il suono e la grafica, c’è il software di controllo (driver) della scheda video con prestazioni eccezionali, e via discorrendo. Non è più così.
Ultimamente vengono fatti sempre più spesso tentativi di ridimensionare la cattiva fama di Linux in questo particolare ambito dell’informatica e la letteratura sull’argomento si sta arricchendo (vd. anche il tag debunking), segno che i tempi cominciano davvero a cambiare.

L'incontro fra Microsoft e Linux
L’incontro fra Microsoft e Linux

Molte persone si lamentano per la scarsità di giochi, la realtà è però diversa, loro vorrebbero poter eseguire i giochi preferiti su Linux. Ci sono quattro semplici soluzioni a questo problema: cercare un titolo equivalente, ma di tipo open source; individuare quelli multi-piattaforma (i cosiddetti cross-platform); provare con Wine; predisporre il computer con il dual boot (il doppio sistema di avvio).
Ogni sistema operativo ha una rispondenza di mezzi ai fini e delle aree d’impiego dove dimostra di essere superiore rispetto alle piattaforme software alternative. Nel progetto originario di Linux non c’era l’obiettivo di avvicinare la gente ai videogiochi perché chiaramente esistevano già le console dedicate. Linux è stato prima un software di nicchia dei geek, poi una scelta obbligata per gli esperti e i professionisti con un’ampia conoscenza di UNIX, Internet e reti di computer; tuttavia oggi i suoi utilizzi sono ben più ampi e gode di crescente popolarità in nuovi campi. Linux viene infatti apprezzato nella computer grafica, nella ricerca scientifica, nel mobile computing, e nello svago – come cercherò di dimostrare.

Quando c’era Loki Software (dal 1998 al 2001), i migliori giochi di Windows venivano “portati” su Linux, erano Quake III Arena, Civilization: Call to Power, Myth II, Soldier of Fortune, Railroad Tycoon II, Descent II e tanti altri. Finalmente una software house faceva investimenti nel settore, al pari di Microsoft o Apple. Distribuiva anche diversi strumenti (poi diventati free software) che semplificavano la procedura di installazione, configurazione o rimozione del gioco stesso: il programma Loki Installer, le librerie SDL e OpenAL (ancora ampiamente utilizzate). Seppur coraggiosa ed originale, l’impresa terminò purtroppo dopo appena tre anni per bancarotta. I PC Games dominavano il mercato e la maggior parte dei giocatori, potendo avviare sia Windows che Linux, era contraria ad acquistare due versioni dello stesso gioco. Inoltre la vendita avveniva per corrispondenza, ad esempio tramite il negozio Tux Games, dato che era difficile trovare i Loki Games sugli scaffali dei supermercati. Comunque un’altra software house, la compagnia Linux Game Publishing, continuò l’impresa riproponendo un discreto numero di videogiochi.

L’ultimo decennio ha visto l’avvento della banda larga e di nuove forme di pagamento per via telematica. Sono quasi scomparsi gli intermediari fra sviluppatori e giocatori, se quest’ultimi non trovano un titolo nei grandi magazzini, provano a comprarlo online e a scaricarlo dal Web. È l’era della content delivery di Steam, Green House, GOG e Direct2Drive.

Qualora Valve rilasciasse Steam per Linux – è più che una congettura, abbiamo visto il primo esemplare del programma dopo lo scoop di Phoronix – si giocherebbe una partita alla pari con Windows. Molti altri giocatori passerebbero da Windows a Linux sapendo che i popolari Half Life, Counter-Strike, Team Fortress sono diventati cross-platform.
Per il momento però, se escludiamo l’idea di scegliere i giochi open source equiparabili ai titoli che ho appena citato, dobbiamo usare Wine. In poche parole, e senza entrare nel merito del funzionamento del programma, eseguiamo le applicazioni Windows su Linux, FreeBSD e Mac OSX. Questo sistema presenta ulteriori vantaggi: Wine è economico, infatti il suo costo è nullo (free) rispetto ai cento euro che occorrono per acquistare una licenza di Microsoft Windows; si scarica dalla Rete sotto forma di codice sorgente o di pacchetto con il codice binario pronto all’uso; ha una elevata compatibilità con Windows, dalla versione 3.1 alla recente Windows 7; è ottimo in termini di prestazioni.

Tanto il neofita quanto l’hardcore gamer apprezzano anche CrossOver Games e Cedega. Questi due software sono basati su Wine e forniscono una GUI (Graphic User Interface) che facilita sia l’installazione che la configurazione di numerosi giochi; l’utente può anche usufruire dell’assistenza di personale qualificato in caso di difficoltà con le operazioni. Da un confronto con Wine e Windows stesso, Crossover e Cedega hanno mostrato un livello di efficienza pari o superiore in molti test. Ma la qualità di questi software ha un prezzo che è meglio pagare quando Wine fa le bizze e non abbiamo tempo per aspettare una soluzione oppure una patch. In realtà con i videogiochi più gettonati fila tutto liscio. Di recente ho registrato un account di World of Warcraft e ho potuto constatare quanto sia semplice e veloce predisporre il necessario per l’avvio della partita online; riporto ulteriori esempi dagli esiti soddisfacenti: Guild Wars, GTA, Fallaout, Runes of Magic, Medal of Honor, Call of Duty, Battlefield 1942. Wine amplia le opportunità di gioco in Linux, ma non fa i miracoli. Prima di acquistare qualche cosa è bene informarsi se dà problemi, per esempio nella lista AppDB il software funzionante viene contrassegnato con “medaglie” di platino, oro o argento.

Un elenco di giochi è presente anche in Playonlinux. Gli utenti di questo programma usano i menu e le icone di una interfaccia grafica per scorrere la lista di videogiochi (o applicazioni) che desiderano provare. Alla base c’è un insieme di istruzioni, scritte nei linguaggi Python e Bash, che passate a Wine ne automatizzano i processi di installazione, configurazione o rimozione. Quando eventuali bug vengono scoperti, oppure una nuova applicazione supera i test, gli sviluppatori rilasciano un aggiornamento. Con Playonlinux sono finiti i tempi cupi passati a cercare nella Rete le soluzioni ai bug, le patch o i parametri di Wine.

Schermata di Playonlinux
Schermata di Playonlinux

L’hardware di un PC deve fornire una potenza adeguata al gioco, che il sistema sia Windows o Linux è indifferente. Un computer costruito con la componentistica di dieci anni fa a malapena riesce ad eseguire Enemy Territory: Quake Wars; la CPU Athlon XP 1500+ e la scheda video Radeon 9700 sono tipici esempi di pezzi troppo vecchi per essere montati oggigiorno nei cabinet, a meno che si voglia usare solo giochi e applicazioni altrettanto vecchie, mi riferisco a Counter-Strike, Quake 3, ecc. Oltre al requisito hardware/software, c’è un altro aspetto da considerare: l’assemblaggio di una “macchina da gioco” Linux deve cominciare con la ricerca delle componenti compatibili perché i prodotti sono garantiti in genere per Windows. Prendiamo la scheda video, è un elemento decisivo nella composizione dell’immagine sullo schermo che deve funzionare sempre ai massimi livelli, pertanto prima di acquistarla bisogna svolgere una opportuna verifica su Internet, magari chiedendo l’opinione di altri utenti nei forum: la scheda deve servire perfettamente il sistema operativo. Intel, ATI e nVidia sono le principali aziende che progettano GPU (Graphic Processing Unit, l’unità centrale di elaborazione della grafica) per le schede video; il programma che controlla le funzioni disponibili a livello hardware (il driver) è unico, in genere, per l’intera gamma di modelli: abbiamo quindi il Catalyst per le Radeon di ATI e l’UDA per le GeForce di nVidia; tralascio quelli open source perché il livello di prestazioni che possono raggiungere con i giochi è purtroppo inferiore.

È il momento di fare alcuni esempi concreti, cominciando da un gioco gratuito, d’azione e cross-platform che attualmente spopola su Internet.

Quake Live

Quake Live è un First Person Shooter (letteralmente tiratore in prima persona, spesso abbreviato con FPS) che ridà vita al classico e arcinoto Quake 3 Arena di dieci anni fa, sia modificando il motore grafico del gioco sia introducendo una serie di nuove funzioni: l’integrazione col web browser, le statistiche persistenti, il medagliere e un sistema per confrontare i livelli di esperienza dei giocatori, detti gladiatori, che si scontrano in un’arena attrezzata di armi, munizioni, scudi, potenziatori ed energizzanti.

Quake Live dentro il web browser
Quake Live dentro il web browser

Runes of Magic

Ci sono anche i “giochi di ruolo”, conosciuti come RPG (Role Player Game). Runes of Magic è un clone, in parte gratuito, di World of Warcraft; con questo non voglio dire che sia fatto male, tutt’altro! Su Linux “gira” abbastanza bene, ma l’installazione richiede molta pazienza perché viene distribuito con due archivi di notevoli dimensioni (4GB ciascuno). Senza un computer potente è meglio lasciar perdere questo gioco. Io l’ho provato su Ubuntu con l’ultima versione di Wine (1.2 RC2) e in Rete il sistema mostrava dei limiti evidenti nel gestire i luoghi affollati.

Heroes of Newerth

Preferisco catalogare Heroes of Newerth (HON) tra i giochi di strategia, tuttavia possiede alcune caratteristiche tipiche del gioco di ruolo: l’eroe ottiene attacchi speciali e vari attributi superando venticinque livelli di esperienza; inoltre può rafforzarsi acquistando gadget, armi e armature nei negozi. La classe del personaggio è basata sulla forza, l’intelligenza o l’agilità. La scelta deve essere fatta con giudizio, in modo che ci sia compensazione fra i cinque eroi della squadra. L’equilibrio rischia di spezzarsi facilmente quando i giocatori portano avanti azioni suicide e senza tatticismo –– nel gergo del gioco si dice “alimentare il nemico”. Per tutti è fondamentale guadagnare i soldi uccidendo i PNG o distruggendo le torri dell’avversario che difendono l’obiettivo del gioco: l’altare al centro della base.

HON: assalto alla torre
HON: assalto alla torre

Le grandi software house (Microsoft e Apple) dominano il mercato dei videogiochi perché fanno grandi investimenti per i sistemi operativi Windows e OS X, ma in Linux non mancano le opportunità di giocare e il programma Wine permette di arrivare ai titoli che oggi non sono cross-platform. Il sistema dual-boot potrebbe essere l’alternativa: quando Windows (oppure OS X) e Linux sono installati sulla stessa macchina, abbiamo praticamente tutto il “parco giochi” per PC a nostra disposizione e dato che spesso ci consegnano XP, Vista o Seven all’acquisto di un computer, sarebbe ingenuo non sfruttarli per giocare ai titoli che non si possono ancora eseguire su Linux.

 

Giganti del software a confronto

La storia di Unix ha qualcosa di sorprendente: Thompson e Ritchie iniziarono a svilupparlo nel 1969 nei Bell’s Lab e dopo quasi quarant’anni non si contano nemmeno più le sue varianti: System V, Xenix, BSD, Irix, SunOS, NetBSD, FreeBSD, e molti altri. Anche se alla fine tutti questi sistemi operativi discendono da appena due o tre tipi di Unix, oggi si notano ancora numerose caratteristiche in comune con l’originale di AT & T.
Soltanto negli ultimi tempi Linux si è affermato tra i sistemi operativi di fascia home computing, mentre FreeBSD ha catalizzato maggiormente l’interesse dei professionisti dell’high tech. Nonostante questo, spinto soprattutto dalla curiosità, ho provato l’ultima versione di FreeBSD (la 7.1) con i videogiochi, l’aspetto che prediligo di più di un computer. Purtroppo, i miei titoli preferiti non hanno funzionato. Ho rinunciato, per problemi vari, a giocare con Quake Wars, Quake 4 e Doom 3.

Pur senza svolgere un benchmark comparativo approfondito, ho potuto farmi una idea delle principali proprietà del sistema. Ora, non me la sento di dire se in generale FreeBSD sia migliore di Linux o viceversa, come dice Matthew D. Fuller nel suo blog: “siamo tutti d’accordo nel considerare Unix la scelta migliore, ma abbiamo idee divergenti su quale usare”. Entrambi hanno eccellenti qualità nell’ambito delle attività di Rete (networking), possono “girare” su molte architetture hardware in commercio, e vengono adoperati quando la sicurezza diventa un fattore critico per la salvaguardia delle informazioni o delle operazioni di un server. Sono pertanto la soluzione ideale per Lanparty o partite in multiplayer.

Spesso ci si riferisce con Linux solo al kernel (il nucleo, dall’inglese) del sistema operativo, mentre il nome FreeBSD viene dato all’insieme dei software che girano sul calcolatore sotto la licenza BSD. Un’altra differenza, abbastanza evidente, si riscontra nel ciclo di sviluppo: decentralizzato su Linux, centralizzato in FreeBSD. Il prodotto finale è di solito una distribuzione Linux che combina il kernel, gli strumenti di produttività, un ambiente desktop e altre applicazioni, mediante un gestore di pacchetti (deb, rpm, tar, ecc.); al contrario gli sviluppatori di FreeBSD lavorano sempre sullo stesso gruppo di programmi (base system) che consegnano aggiornato e pronto per l’installazione. Al massimo esistono delle varianti che soddisfano i gusti di determinate utenze di computer, ad esempio l’utente occasionale (casual user) di PC-BSD. Le maggiori distribuzioni Linux sono Ubuntu, OpenSUSE e Fedora. I derivati di FreeBSD più famosi sono PC-BSD, Mac OS X, m0n0wall.

BSD e GNU sono due licenze di utilizzo dei programmi, fra le tante disponibili nel panorama del software di tipo open source. Rispetto alle alternative, sono state preferite da una ampia base di sviluppatori fervidamente convinti dei vantaggi che la ridistribuzione del codice sorgente può portare alla società.

FreeBSD 7.1

Questa era la mia prima installazione di FreeBSD e pertanto temevo di commettere qualche pasticcio; durante la procedura tenevo pronto sulla scrivania un computer portatile collegato al sito Internet http://www.freebsd.org, per evitare di bloccarmi in passaggi poco chiari. La grafica del programma di setup (sysinstall), realizzata con la libreria curses, mi ha lasciato perplesso fin dall’inizio. Però è andato tutto liscio sotto ogni aspetto: scelta della lingua, configurazione della tastiera, impostazione della scheda e dei servizi di rete, selezione dei pacchetti software da un elenco di categorie, e così via. Io poi avevo già creato una partizione di tipo FreeBSD con fdisk di Ubuntu, quindi credo di aver semplificato il procedimento. Sapevo infatti che il “partizionamento” faceva riferimento alle unità logiche che si usano raramente in Linux.

Inizialmente volevo svolgere un benchmark con Phoronix Test Suite, poi ho avuto un ripensamento perché non riuscivo a fare la maggior parte dei test previsti. Visto l’insuccesso, ho ripiegato su un altro metodo, forse laborioso ma efficace: l’esecuzione del timedemo in Enemy Territory. Mi serviva la registrazione (demo) di una partita, da ripetere sia su Linux che FreeBSD con alcune opzioni per il calcolo del frame rate medio di ciascun sistema. Non immaginavo che dal confronto potesse risultare una differenza di prestazioni quasi insignificante. A 800×600 pixels c’era uno scarto di appena quattro frame per secondo e raggiunta la risoluzione di 1280×1024, con un alto livello di dettaglio dell’immagine, sia Linux che FreeBSD facevano cento frame al secondo. Questi dati dovrebbero incoraggiare anche i più scettici a trasferire Enemy Territory da un sistema all’altro. Di solito su FreeBSD i videogame per Linux sono eseguiti con un emulatore (linuxator) che il giocatore, avido come è di tempi di risposta rapidi, potrebbe giudicare male; ma in questo caso non ha penalizzato l’elaborazione in modo marcato. Il computer utilizzato per la prova era il mio PC “assemblato” con la seguente componentistica, già ampiamente descritta in passato:

  • CPU Amd Athlon 64 X2 4800+
  • Mobo Gigabyte GA-M57SLI-S4
  • Kingston KVR800D2N5 DDR2 800Mhz, 1024MB * 2
  • Hard Disk Western Digital Caviar 80GB, 7200 rpm, 8MB di cache
  • Scheda video XFX Nvidia GeForce 8600 GTS, 256MB DDR2

Il software preso in esame invece era:

  • Linux Ubuntu 8.10 (x86), Xorg 1.5.2, Nvidia 180.44
  • FreeBSD 7.1 (x86), Linuxator con Linux From Scratch 6.4, Xorg 1.5, Nvidia 180.44

Spesso gli utenti tornano a usare Linux dopo un breve periodo di prova di FreeBSD. Per varie ragioni: i giochi commerciali sono una rarità, devono installare un emulatore (linuxator oppure vmware), non tutti vengono eseguiti meglio che in Linux. Ma soprattutto hanno difficoltà a trovare altri giocatori, ai quali chiedere aiuto o consigli.

 

Linux e il 3D Benchmarking

L’analisi delle prestazioni di un elaboratore consiste nel misurare le capacità di calcolo con un insieme di programmi (carico di lavoro, detto workload) particolari. “Nella maggior parte dei casi le prestazioni sono l’attributo più importante nell’orientare la scelta fra diversi elaboratori disponibili” (Patterson e Hennessy, Struttura e progetto dei calcolatori, pag. 37). Certamente la misura da sola non suggerisce alcuna indicazione utile all’acquirente. Occorre ripeterla fra varie macchine, cioè svolgere un confronto e poi riferire i risultanti. Studiando questi dati, nel corso degli anni, i progettisti hanno perfezionato gli elementi del personal computer che davano maggiori prestazioni in certe aree piuttosto che in altre. L’acceleratore grafico (GPU) ha sostituito la CPU nei calcoli geometrici e si è specializzato sul rendering delle scene 3D. La tecnologia SLI (o l’alternativa Crossfire), di recente invenzione, promette di raddoppiare o triplicare (quasi), a seconda del numero di GPU messe in parallelo, le prestazioni dell’elaboratore con le applicazioni 3D che sono prevalentemente giochi basati su OpenGL o DirectX. Gli ingegneri hanno aggiunto poi alla GPU le istruzioni macchina per risolvere complicate formule di matematica e fisica, mi riferisco all’engine CUDA di nVidia. Una valutazione accurata sull’efficienza del sistema hardware e software viene svolta con un gruppo di benchmark. Si tratta spesso di programmi individuati fra quelli che l’utente utilizza abitualmente (Phoronix Test Suite), oppure sono applicazioni specifiche che esaminano determinate componenti (CPU2006, RAMSpeed, ecc). Oggi la grafica 3D richiede più potenza e memoria di qualsiasi altro programma per PC. Quando usiamo i videogiochi come carico di lavoro sul nostro banco di prova, otteniamo una previsione molto attendibile delle prestazioni del calcolatore. Il metodo è semplice. Possiamo valutare l’affidabilità del nostro computer partendo dai seguenti giochi: Quake III, Unreal Tournament 4, Doom 3, Enemy Territory, Quake Wars, Savage 2, Nexuiz, perché li troviamo a pagamento, gratuitamente o come demo nel World Wide Web e con uno sforzo minimo riusciamo a installarli in Linux.

Quake Wars

Quake Wars si adatta bene all’analisi delle prestazioni. Il suo motore grafico è derivato da Doom 3 e incorpora la tecnologia denominata MegaTexture che migliora indubbiamente l’aspetto del gioco negli spazi aperti della mappa. Possiamo adoperare, per il nostro scopo, la versione di prova oppure quella commerciale. Prima dobbiamo scegliere la mappa, quindi registrare una partita da Internet e poi ripetere la registrazione con una opzione determinata. Al termine dell’operazione, il motore grafico calcola il frame rate dividendo il numero totale di immagini che compongono l’animazione con il tempo, espresso in secondi, impiegato dalla macchina fisica per visualizzarle. Il risultato esprime l’effettiva prestazione della scheda grafica e del sottosistema hardware/software. Il valore suggerisce anche a quale risoluzione video possiamo giocare senza perdere troppa qualità nell’immagine.

Scarica uno dei pacchetti messi a disposizione per Linux

  1. Quake Wars demo v2.0 – Contiene la mappa Valley
  2. Quake Wars 1.5 Full – Richiede il DVD

Per registrare una partita, collegati a un server e premi il tasto F12. Troverai il file della registrazione nella directory:

$HOME/.etqw/base/demos

Dalla console del gioco esegui i seguenti comandi in successione:

com_unlock_FPS 1
com_unlock_timingMethod 0
com_showFPS 1
timeNetDemo FILENAME.ndm
condump FILENAME.log

Puoi mettere questi comandi, preceduti dalla parola chiave seta, in un file di testo chiamato NOMEFILE.cfg:

seta com_unlock_FPS 1
seta com_unlock_timingMethod 0
seta com_showFPS 1
timeNetDemo FILENAME.ndm (* questo senza seta *)

Poi dalla console devi soltanto invocarlo con: exec NOMEFILE.cfg

Non dimenticare la riga di comando di Unix che abilita la console (se disabilitata):

etqw +set com_AllowConsole 1

 

Lunga vita a Neverwinter

Il gioco Neverwinter Nights non fa più notizia nei siti esclusivi di videogiochi, eppure continua a esercitare il suo fascino su migliaia di persone da oltre sette anni. Il merito di questo successo va dato in parte ai DM (Dungeon Master, sono i narratori) e ai Builders che hanno mantenuto vivo l’interesse dei giocatori, scrivendo nuove avventure e costruendo nuovi scenari, in parte agli sviluppatori che hanno ideato dei metodi intelligibili per modificare il gioco. Il gruppo di strumenti Aurora fornisce un insieme di oggetti, creature e procedure. Quando l’utente apre l’applicazione deve scegliere il tipo, la dimensione, e il nome della mappa. Un’area viene plasmata con dei prefabbricati: sono modelli di medie o grandi dimensioni disegnati dagli artisti di Neverwinter e pronti all’uso. Il lavoro si arricchisce di particolari attingendo da un ampio assortimento di altri piccoli oggetti ordinari (i “posizionabili”): dai forzieri agli alambicchi per i negozi di alchimia, dalla balista distrutta all’albero morto, e così via. La mappa è messa (eventualmente) in comunicazione con un’altra tramite gli attivatori o le porte. Anche senza un progetto ben definito sulla carta, le idee possono prendere velocemente forma nel riquadro dello schermo. Basta un po’ di fantasia, impegno, conoscenza della riga di comando Unix, e le basi di un linguaggio di programmazione per conseguire dei risultati soddisfacenti. Purtroppo il programma non può essere eseguito da Linux, si usa la versione di Windows nell’ambiente Wine. I moduli funzionano comunque su entrambi i sistemi operativi. Questa soluzione utilizza la copia di Neverwinter Nights del disco rigido (virtuale) di Windows. Non c’è problema a mettere in comune certe directory del gioco (per esempio quella contenente i moduli) fra Linux e Windows, anzi si risparmia spazio sul disco. Sia chiaro, ciò resta facoltativo e ha poca importanza sul risultato finale.

La mia avventura si basava sulla campagna di Gallia condotta da Caio Giulio Cesare, descritta fedelmente nel suo libro “De bello gallico”; i Romani, i Galli e i Germani formavano le quest centrali della storia, mentre i mostri (goblin, coboldi, ecc.) erano di supporto. Ho assegnato all’avventura il titolo dello stesso libro e l’ho installata su un server locale per condividerla fra due computer. L’aspirante builder può realizzare una campagna di gioco in poche ore, facendo riferimento ai manuali distribuiti in Internet e consultando frequentemente i forum tematici (vd. Custom Content, Scripting, Toolset), dove altri utenti più esperti hanno già risposto a diversi problemi comuni. Di regola, il sistema resuscita il giocatore nello stesso punto in cui cade, ma molti DM preferiscono spostare il suo corpo in un tempio e rianimarlo. Il giocatore dovrebbe perdere punti esperienza nel caso subisca una sconfitta in duello. Lo scripting di Neverwinter permette di aggiustare questi due aspetti del gioco.

Dopo aver costruito un modulo a sé stante, occorre preparare il server, controllare che tutto funzioni bene, verificare i requisiti: una connessione a Internet, il numero di CD-Key, e la versione del programma. Non esiste una opzione della riga di comando per collegare direttamente il client al server (in Windows c’è +connect), bisogna passare per la modalità d’uso “multigiocatore” specificando il nome e la password registrati nel computer centrale di Bioware. Se il modulo è stato costruito con oggetti presi da Hordes of the Underdark e Shadows of Undrentide, ogni client della Lan deve disporre delle due suddette espansioni e le relative CD-Key. Il server fa un controllo rigoroso, non si sfugge. Oggi, purtroppo, è raro trovare in negozio una confezione nuova di Neverwinter Nights. Solo i codici hanno valore, perché le risorse del gioco si scaricano dalla rete. Quindi se vi capita di vedere una espansione in vendita a pochi euro, per esempio HOTU, compratene tre copie!

Vademecum

  1. Scarica il server di gioco (Win, Linux)
  2. Scarica le risorse del gioco (v1.29, Linux)
  3. Scarica la patch del gioco (italiano v1.29, Linux)
  4. Scarica gli eseguibili del gioco (v1.29, Linux)
  5. Scarica l’aggiornamento (italiano v1.68, Linux)
  6. Scarica la patch del gioco (Windows, per usare Aurora)

Problemi con l’avvio del gioco?

Per risolvere il seguente problema:

[ferocious@laptop-mango nwn]$ ./nwn
nwmain: xcb_lock.c:77: _XGetXCBBuffer: Assertion `((int) ((xcb_req) - (dpy->request)) >= 0)’ failed.
./nwn: line 12: 18836 Aborted ./nwmain $@

si deve rimuovere la directory lib dalla variabile d’ambiente LD_LIBRARY_PATH specificata nello script nwn.

Il PC radiografato con Phoronix Test Suite. Michael’s Laptop vs Ferocious

Mentre leggo la notizia di Phoronix, già fantastico sulle prestazioni del portatile che acquisterò alla fine di questo mese (devo scegliere fra MSI GX 700 o Toshiba X200). Non aggiungerò oggi nulla a quanto è stato già scritto altrove, a parte naturalmente parlarvi di alcune prove effettuate per conto mio con il nuovo Phoronix Test Suite (PTS) sull’attuale computer. Ammetto che l’argomento benchmark è piuttosto ostico, ma i software di questo tipo vengono in aiuto ai principianti perché permettono facilmente di svolgere comparazioni, confronti con altri dati statistici pubblicati sul web oppure semplicemente esaminare a fondo il PC alla ricerca dei punti deboli che compromettono il rendimento complessivo (valore importante per giocare bene). PTS è dunque una collezione di programmi per il Benchmark sotto Linux; non solo Phoronix li usa per i suoi test “interni”, ciò basterebbe come garanzia sui risultati, ma sono stati sviluppati seguendo anche i suggerimenti dei venditori di componenti hardware. Non voglio sminuire i progetti analoghi, anzi colgo l’occasione per ringraziare Encelo per avermi segnalato GL O.B.S. Mi occuperò anche del suo GL Open Benchmark Suite così come di SPECviewperf, questione di giorni perché devo prima conoscere a fondo una cosa per poterla trattare in maniera obiettiva e completa. Ma il mio contributo resterà pur sempre modesto, dovendomi limitare a riportare link ed opinioni da un blog così poco conosciuto. Mi dispiace soprattutto per gli addetti ai lavori, che non riceveranno una eco pari allo sforzo da loro compiuto.

Inizialmente ho avuto dei problemi di installazione ed esecuzione. La procedura non era chiara, speravo di trovare istruzioni precise nella directory per lanciarmi subito con i benchmark, invece conteneva solo informazioni essenziali: un README con i collegamenti al sito web, un TODO con la lista delle cose ancora da fare: scrivere la documentazione per esempio! Poi mi ha sorpreso il linguaggio di scripting php usato per l’esecuzione batch dei comandi. PHP rappresenta un emblema della portabilità dei programmi fra sistemi operativi, ma questa portabilità è veramente necessaria per i nostri scopi? Sì, se il confronto si deve fare fra Linux con Windows, Linux e FreeBSD o Solaris, ecc. Però siamo abituati a eseguire php sui server per creare e serverire pagine web anziché da linea di comando per mandare in esecuzione le applicazioni. L’impatto del software di benchmark sulla memoria di sistema e sull’elaborazione è cruciale. Forse anche sotto questo punto di vista l’interprete php si rivela una scelta azzeccata per non falsare i risultati, avendo poche dipendenze e consumando risorse minime. Gli intoppi che accennavo in precedenza, non si sarebbero manifestati su una distribuzione Linux, io invece usavo Linux From Scratch e tra una dipendenza e l’altra (PHP 5, Php-GTK) non sono riuscito a venirne a capo immediatamente, ma solo dopo aver chiesto lumi a Michael sul forum.

PTS Global raccoglie i risultati dei test. Tramite identificatori si possono effettuare confronti con i benchmark di altri utenti e pubblicarli sul sito, nella sezione creata apposta. Una caratteristica utile e interessante che potrebbe essere migliorata con l’aggiunta di stili personali per la grafica (con tag per un facile inserimento degli istogrammi nei blog o nei siti web). Il sistema sembra pure predisposto per una “autenticazione” degli utenti, previa registrazione. Per il momento però l’upload dei dati avviene in maniera anonima e la ricerca tramite le ID o per categoria di suite. Manca il riassunto finale dei dati con una interpretazione, almeno delle note per spiegare quando i valori sono da considerarsi positivi e quando negativi. Avendo voluto fare una analisi delle prestazioni con Ramspeed fra il mio portatile e quello di Michael Larabel, principale autore di questo software, mi sono procurato dalla lista la ID che corrispondeva al benchmark da lui svolto e l’ho passata come argomento al programma phoronix-test-suite. Tutto il necessario per la prova comparativa veniva scaricato all’occorrenza da Internet. PTS Global per Ramspeed test

Micheal’s Laptop:
Processor: Intel Core2 Duo CPU T9300 @ 2.50GHz (Total Cores: 2), Motherboard Chipset: Intel Mobile PM965/GM965/GL960, System Memory: 1982MB, Graphics: nVidia Quadro NVS 140M, Screen Resolution: 1680×1050. OS: Ubuntu 8.04, Kernel: 2.6.24-14-generic (x86_64), X.Org Server: 1.4.0.90, Compiler: GCC 4.2.3.

Ferocious’ Laptop

Processor: AMD Turion(tm) 64 X2 Mobile Technology TL-50 (Total Cores: 2) @ 1.60GHz, Motherboard Chipset: Advanced Micro Devices, System Memory: 1009MB, Graphics: nVidia GeForce Go 7200, Screen Resolution: 1680×1050. OS: Linux From Scratch, Kernel: 2.6.23.1 (i686), X.Org Server: 7.2.0, Compiler: GCC

Ho effettuato un’ultima prova comparativa fra il Turion X2 del mio Asus e il processore Intel Pentium M di Michael, i risultati sono pubblicati al seguente indirizzo: root-21922-23591-12366