Come sopravvivere al Lag. Tra verità e leggende metropolitane.

Il “Mostruoso” Lag:

.

Tipica espressione di contentezza di un utente di un programma multiplayer alla comparsa del lag 🙂

E’ capitato a molti di organizzare o partecipare ad un evento in SL in una sim dove non ci si riusciva a muovere, la chat non funzionava, anche un semplice tocco di un giver non ha effetto, non si riescono a leggere notecard, insomma l’esperienza percepita diventa talmente frustrante da spingere i partecipanti a fuggire, sempre che non crashi la sim prima chiudendo il discorso a metà. Quando capita questo rallentamento, viene definito con un’unica parola “LAG”, (http://it.wikipedia.org/wiki/Lag_(informatica) ) che esprime in inglese il concetto di rallentamento (quando non congelamento FREEZE temporaneo , o addirittura CRASH) di quello che si vive nel mondo virtuale.

Per chi organizza eventi è importante capire come prevenire e curare le cause di lag, in modo tale da offrire a sè stessi e ai partecipanti una qualità di servizio accettabile. Come dice la massima popolare a proposito di mogli e botti, non è possibile avere tutto perfetto nello stesso momento, che tradotto in termini di SL non è possibile avere un evento fluidissimo e contemporaneamente avere 100 avatar nella propria sim. Oltre un certo numero di avatar presenti il fenomento del lag diventa normale e può solo essere limitato ma non annullato. Qui vedremo quali sono gli accorgimenti e gli strumenti a nostra disposizione per valutare, controllare e ridurre il lag, come: la misura della pesantezza della nostra sim o della nostra parcella, la misura delle texture, degli script e delle collisioni e appropriate istruzioni da dare ai partecipanti.

Per chi partecipa ad un evento esistono alcune norme di senso comune generali che riducono in maniera considerevole il disturbo arrecato nella sim (come ad esempio cercare di indossare abiti e capelli a “basso impatto ambientale” e soprattutto evitare di avere troppi script addosso e troppi HUD (spegnete ad esempio i vostri radar e il Mystitool). E’ anche una buona norma se vi trovate in una sim con tantissimi partecipanti di evitare di muovervi, ma di trovarvi un posticino dove sedervi e rimanere attenti, evitando di affollare troppo la chat con le gesture che sono normalmente quasi sempre inutili e dannose. Capelli scriptati con trasparenze e strati di abiti all’ultima moda non aiutano certo.

Tipologie di LAG e il famoso lagmeter.

Ma prima di andare avanti cerchiamo di capire bene le varie tipologie di lag http://wiki.secondlife.com/wiki/Lag. Tutti i viewer recenti hanno un semaforo che serve a capire in modo veloce ed efficace se state sperimentando un LAG oggettivo. Il semaforo è composto da tre luci associate alle seguenti etichette:

  • Client Lag, è il lag associato a difficoltà del computer locale nello stare dietro e al visualizzare le cose che succedono. Spesso questo lag è associato ad un computer lento o vecchio o al fatto che state facendo molte altre cose in contemporanea. Se sperimentate spesso un Client Lag rosso allora forse è il caso che aggiorniate il vostro computer oppure riduciate la qualità della grafica (NON usate ultra), e riducete la distanza di DRAW. Se vedete rosso questo semaforo anche quando avete un computer molto veloce, e con distanza di DRAW al minimo, allora forse stanno succedendo semplicemente troppe cose su quella sim, e gli organizzatori dovrebbero semplificare. Confrontatevi sempre con altri utenti che hanno computer differenti e provider differenti (può darsi che abbiate un problema locale sul vostro pc).
  • Network Lag, è il lag associato alla trasmissione di dati dal vostro computer verso i server della linden e viceversa. E’ normale che quando si entra per la prima volta in una sim occorra scaricare tutte le texture e gli oggetti della sim. Se la sim ha molti oggetti, sculpted, mesh, può essere che debbano essere scaricati centinaia di megabytes prima che voi possiate vedere bene ciò che vi circonda (come sanno bene gli sfortunati che devono usare le penne dati con tariffe proporzionali al traffico utilizzato). Per ridurre questo lag provate a ridurre la distanza di DRAW ed eventualmente scegliete un provider più veloce. Confrontatevi comunque sempre con altri utenti differenti. Potete anche ridurre la banda nelle preferenze per evitare di ingolfare la linea.
  • Server Lag, questo è il lag “intrinseco” che viene percepito da tutti ed è l’unico oggettivo nel senso che è misurabile indipendentemente dal vostro computer, e dalla qualità della vostra connessione. Questo è di solito il lag che può essere più facilmente individuato e normalmente risolto. Questo genere di lag è associato direttamente agli script che girano sulla sim, alle collisioni degli avatar con oggetti, e al motore fisico che muove gli oggetti.

Capiamo le Statistiche ctrl-shift-1

accessibile facilmente con ctrl-shift-1

Per chi voglia capire meglio le cose può digitare questi tre tasti assieme o cercarlo nel sistema di menu del vostro browser e si ottengono una serie di dati fra cui i più importanti sono:

  • Time Dilation normalmente un numero molto vicino ad 1 ad esempio .995. Misura il lag di SERVER ed è preoccupante quando scende al di sotto di .90. I famosi misuratori di lag che si trovano in SL lo esprimono con una % ottenuta facendo 1 – TimeDilation e moltiplicando per 100. Quindi una time dilation di 0.92 risulta essere rappresentata come un lag di 8%.
  • Sim FPS, indica quanti frame al secondo (istantanee del mondo) riesce a generare complessivamente il server. Il max è 45. Se questo numero diminuisce al di sotto di 35 vuol dire che la sim sta subendo server lag, se scende al di sotto di 10 vuol dire che c’è qualcosa di veramente grave (cfr: http://community.secondlife.com/t5/English-Knowledge-Base/Managing-Private-Regions/ta-p/700115).
  • TFT: Total Frame Time. Il minimo possibile è 22.2 msecondi, se vedete che questo tempo è sensibilmente più alto vuol dire che si sperimenta lag. Da consultare solo se vedete una sim fps minore di 35.
  • Script time. Questa è la quota del TFT imputabile agli script. Si considera “in ottima forma” quando è inferiore a 5 ms, ancora accettabile attorno ai 10 ms, di più normalmente significa che forse avete troppi script attivi. In quel caso dovete ottimizzare o se necessario inibire alcuni o tutti gli script sulla vostra sim nei casi più gravi. Tenete conto che a volte gli script sono parte essenziale della esperienza della sim quindi eliminare TUTTI gli script potrebbe rendere la sim inutile.
  • Physics Time non dovrebbe essere molto più alta di 4 msec.
  • Ping Sim in America è più basso perchè sono più vicini ai server, in europa di solito oscilla fra 150 e 300 msec. Un valore più alto indica seri problemi di connettività del vostro provider (http://community.secondlife.com/t5/Technical/Movement-Lag/qaq-p/1663457/comment-id/26363).

Per alcune altre note sulle statistiche e ottimizzazioni del vostro viewer: http://community.secondlife.com/t5/English-Knowledge-Base/How-to-improve-Viewer-performance/ta-p/1316923.

Potete verificare quali script, occupano più tempo CPU, oppure i top colliders utilizzando la funzionalità di DEBUG nella finestra di Region/Estate a disposizione degli Estate Manager. Se sospettate che siano gli script a produrre lag potete provare a stopparli temporaneamente o stoppare temporaneamente la fisica delle collisioni. Se una di queste due operazioni cancella il lag percepito allora sapete la tipologia di cose che provocano problemi. Se disabilitando gli script non si avvertono miglioramenti sensibili, ad esempio, è inutile cercare di ridurli, ma è meglio concentrarsi su altre cause.

Quanto “pesano” gli avatar?

Bastano pochi attachment per mandare il rendering cost alle stelle… Esempio di un furry con rendering cost di circa 300K

Se ci sono problemi di LAG è meglio avere abbigliamenti, capelli e attachment poco appariscenti 🙂

Il famigerato ARC Avatar Rendering Cost o il più recente RWA Render Weight for Avatar http://wiki.secondlife.com/wiki/Mesh/Rendering_weight indicano una misura di quanto pesano gli avatar. Quest’ultimo parte da un minimo di circa 5K e arriva finoa 300/400K (cfr http://community.secondlife.com/t5/Mesh/Rendering-cost-Mesh-VS-Prims-sculpty-who-is-better/td-p/1312849). Va da se che valori molto più alti di 10K generano inevitabilmente lag nei viewer dei vicini. E’ meglio fare in modo che il proprio avatar non abbia peso elevatissimo. Abiti, capelli complicati specialmente se trasparenti o se emettono particelle sono considerati costosi e andrebbero evitati.

Quanto “pesano” gli sculpted e le mesh? E’ vero che provocano lag?

Il PE o LandImpact (una sintesi del peso di caricamento dei triangoli, del rendering client e delle collisioni di un oggetto)…

Dopo l’avvento delle mesh nel 2011, è stato creato un sistema di misurazione del peso di un oggetto mesh sulla sim che è differente dal conteggio dei prim ed è considerato universamente adeguato ad esprimere il peso di una mesh: il PE o Land Impact. Questo valore non viene calcolato per i prim normali in quanto il loro PE viene posto uguale al numero dei prim.

Quanti triangoli pesi?

E’ Il peso della trasmissione dei dati sulla composizione delle mesh

E’ stato dimostrato che un cubo mesh ha un peso sulla sim nettamente inferiore rispetto ad un cubo prim oppure ad un cubo sculpted.

Infatti sempre nel link di prima si dimostra che un cubo mesh è composto da 12 triangoli, un cubo prim (se non torturato) ha un peso di almeno 108 triangoli (quasi 10 volte più complesso da renderizzare per il vostro viewer), mentre un cubo sculpted ha un peso di circa 2048 triangoli (!!).

Triangoli che costituiscono un cubo come prim normale

sono sempre gli stessi quindi uno sculpted cubo avrà sempre 2048 facce

Se ne deduce che gli sculpted pesano in genere di più dei prim i quali pesano in genere di più delle mesh.

Il peso delle collisioni e del Pathfinding

Buona parte del tempo della sim è dedicato all’individuazione delle possibili collisioni fra oggetti ed avatar.

Attenzione però alle collisioni: uno sculpted collide come un cubo, mentre in teoria una mesh può collidere in modo molto complesso generando un certo grado di lag di collisioni. Il problema eventualmente associato alle collisioni si può facilmente risolvere rendendo gli oggetti mesh phantom oppure associando una fisica più semplice.

Per quanto riguarda il pathfinding occorre sottolineare che in caso di lag sulla sim tutte le funzionalità di pathfinding sono automaticamente sospese e quindi non può contribuire a generare il lag, ma al massimo ne è vittima… Attenzione a chi fa costrutti pathfinding quindi perchè non funzionerebbero in caso di lag… http://community.secondlife.com/t5/Second-Life-Server/Pathfinding-FAQ/td-p/1672699 In ogni caso il contributo massimo al lag del pathfinding nelle condizioni peggiori non può superare 4 msec (o 1 msec nelle homestead) rendendolo di fatto secondario rispetto alle altre sorgenti di lag.

Il peso delle texture

Le textures sono spesso la causa prima del lag client e di network…

Questo è un peso generalizzato su tutti i tipi di prim: più texture si usano e più lag di trasmissione sulla rete si genera (misurabile dal tempo che impiega la sim e i suoi oggetti a rezzarsi quando vi teleportate e vedete tutto vuoto o grigio. Come vedete chiaramente, le texture sono le ultime che arrivano perchè in genere “sono le + pesanti”.

Se chi ha creato gli oggetti ha usato tutte texture 1024×1024 allora vi garantisco che la trovate lunga (!). Per inciso una texture 1024×1024 richiede per la trasmissione da 3 o 4 Megabytes a seconda che abbia o meno la trasparenza http://community.secondlife.com/t5/Building-and-Texturing-Forum/Texture-Optimization/td-p/700503.

Quanto pesa una texture

Da questo schema si vede che uno sculpted pesa in realtà 2048 triangoli + la sua sculpted map (64×64 che è irrisoria 16Kb ma se siete pieni di altre texture da visualizzare vengono accodate e arriveranno in forte ritardo con il classico effetto delle sculpted a pallone prima di essere ben definite) + la sua texture 1024×1024 che invece impiega 2-3 megabyte. Se trasformate uno sculpted inserendo “convex hull” nella maschera delle “features” vedete che il suo costo in PE raddoppia rendendo chiaro che il costo in prim usato precedentemente non è equo perchè non descrive effettivamente il costo reale che ha il server per fare il rendering di uno sculpted.

Riassumendo: una sim piena di sculpted può laggare (semaforo network + client) oppure un avatar vestito con capelli tutti sculpted lagga molto di più di quello che laggerebbe se ci fossero mesh (ben fatte). Ovvio che anche con le mesh si possono fare disastri …

Altre sorgenti di Lag: inquinamenti di vario ordine e grado

Spoofer o particles possono laggare il vostro client

Tra le sorgenti di lag client  non ancora esplicitamente citate ci sono gli oggetti che emettono particelle, quelli con l’hovertext (il testo fluttuante). Quelli che spammano parlando sui vari canali di chat. Sorgenti di rumore e di suoni.

Il Voice o il multimedia laggano?

Il voce in senso stretto non crea peso sulla sim o sul vostro viewer, perchè vengono gestiti da un server vivox differente che per esperienza supporta tranquillamente un numero alto di avatar senza gravi problemi, a meno che non abbiate una connessione internet lenta o inaffidabile nel qual caso sentite male e a scatti.

Il multimedia se abilitate tutte le sorgenti di video/audio web texture può creare un fortissimo lag client. ….

Lag proveniente da sim che condividono il vostro server

In SL ogni server ospita 4 sim, ma essendo un server a 4 core, viene garantito che la cpu usata dalle sim confinanti non impatta la vostra sim. Se invece parliamo di Homestead il discorso è diverso: se le sim consociate alla vostra fanno eventi voi ne subite il lag. Questo lag nascosto è difficile da individuare a meno che non conosciate l’identità delle sim limitrofe. Per trovare le sim limitrofe potete usare questo link http://gridsurvey.com/index.php specificando la vostra sim, individuando l’ip potete cercare le sim che condividono l’ip.

Lag proveniente da superprim (anche chiamati megaprim)

Questo è stato molto dibattuto in passato (cfr. http://wiki.secondlife.com/wiki/Talk:Mega_Prim) la conclusione più ragionevole basata anche sulle proprie esperienze è che i superprim phantom non producono lag, mentre quelli non phantom possono produrre lag. Il caso in cui il lag è molto maggiore dei prim normali capita quando ci sono superprim cavi o tagliati con molti avatar o altri prim all’interno della cavità. Pare che il motore fisico di Havok abbia (o almeno abbia avuto in passato) numerosi problemi a gestirli. Dopo l’avvento dei superprim legali avvenuto l’anno scorso si può affermare che i prim fino a 64x64x64 ora legali occupano un peso sul server che è ben rappresentato dal PE. La necessità di megaprim dopo il superamento del limite dei 10 metri, è ora accettabile a mio avviso in alcuni casi particolari come pavimenti molto grandi, sfere enormi. Cercando di farli se possibile phantom e in caso che non sia possibile, di monitorare l’impatto sulle statistiche della sim in particolare per quanto riguarda le collisioni.

Lag proveniente da Hackers e Griefers

Ovviamente è possibile che il lag possa essere prodotto ad arte da persone che vogliono solo disturbare e distruggere l’esperienza. Anche in questo caso la monitorizzazione degli script, delle collisioni dovrebbe far capire chi o cosa produce lag e permettervi di disabilitare script/collisioni o singoli oggetti. In ogni caso è consigliabile fare un Abuse Report alla Linden.

Lag immotivati

A volte il lag è misterioso. Problemi hardware o altri malfunzionamenti lato Linden?

Se non riuscite a muovervi nella sim, il monitoraggio vi segnala che è tutto normale e nulla di apparentemente anomalo sta accadendo, è possibile che la sim sia malfunzionante e necessiti di un restart che potete fare voi o chiedere al servizio di assistenza Linden di farlo al posto vostro. Se queste anomalie ingiustificate si ripetono è opportuno aprire un ticket alla Linden chiedendo di monitorare il perchè la vostra sim si comporti stranamente. In questo caso però è opportuno avere cercato ed individuato tutte le possibilità alternative onde evitare che l’assistenza vi dica che avete dimenticato uno script che va “in loop” 🙂

Il progetto SHINING (risolverà almeno il lag locale?)

Questo articolo non può non concludersi con un accenno al prossimo progetto shining di Linden http://community.secondlife.com/t5/Tools-and-Technology/Project-Shining-to-Improve-Avatar-and-Object-Streaming-Speeds/ba-p/1583465 dove la Linden ha “dichiarato guerra al lag” e sta cercando di trovare dei sistemi che riducono l’impatto della quantità di dati che si scambiano server e client durante l’attività normale. Com’è ovvio questo lavoro se portato correttamente a termine potrebbe ridurre il lag e consentire una fruizione più naturale delle sim con particolare riguardo al lag locale (quello delle texture e degli sculpted per intenderci). Vediamo cosa uscirà…

Conclusione

Mi pare di avervi dato un quadro abbastanza chiaro e completo sul lag.

Come vedete abbiamo gli strumenti giusti per capire o avere forti indizi da dove venga il lag. Prima di fare la caccia alle streghe, è opportuno sincerarsi se il lag della vostra sim provenga effettivamente da una o più di queste categorie. Urlare sempre “allo script” “allo script” (al lupo, al lupo), potrebbe essere in alcune situazioni sbagliato e controproducente perchè il lag potrebbe nascondersi da altre parti insospettabili. In particolare è difficilissimo da valutare il lag client, che risulta molto soggettivo e dipende spesso dal sistema operativo, e dal provider del singolo utente (e magari può essere influenzato da malfunzionamenti sulla loro macchina).

Se ho detto cose che non vi tornano, nei commenti inserite i riferimenti alle sorgenti ufficiali (knowledge base, blog di persone autorevoli o della linden), in modo che possa correggere o possiamo spiegare meglio insieme questi concetti che sono tutt’altro che banali.

Alcuni link utili:

Salahzar

Advertisements
This entry was posted in Technical Evolution and tagged , , , . Bookmark the permalink.

2 Responses to Come sopravvivere al Lag. Tra verità e leggende metropolitane.

  1. utile e chiaro, grazie Salah!

  2. Yay says:

    Questo è il migliore articolo sull’argomento che abbia mai letto!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s