Le moderne applicazioni web, giorno dopo giorno, fanno sempre più uso di risorse locali sul dispositivo dell’utente, in particolare la CPU e la memoria RAM.

Considerato che la maggior parte di noi ormai è munita di dispositivi (PC, notebook, tablets e smartphone) di ultima generazione dotate di CPU ultraperformanti e dotate di molteplici cores, l’utilizzo di cicli macchina aggiuntivi da parte del browser rappresenta una percentuale spesso trascurabile.

Tuttavia ciò non è vero quando si tratta di risorse di memoria (RAM) che nonostante le generose dotazioni (8 / 16 Gbyte) non sono sempre sufficienti ad accogliere l’enorme mole di dati necessaria alla fruibilità delle informazioni di tutte le applicazioni che girano sulla macchina.

Analizzando il comportamento dei più comuni browser attualmente disponibili (Chrome, Firefox, Internet Explore, Edge, Opera) possiamo certamente notare che tra tutti Chorme fa un’utilizzo ben più oneroso di risorse rispetto ai concorrenti. Effettuando alcune ricerche online notiamo che Google stessa ha trattato l’argomento nella sua sezione dedicata al support tecnico di Chrome, tuttavia la soluzione proposta in via “ufficiale” è quella di utilizzare il task manager integrato sul browser per “uccidere” i processi in backgroud che allocano una quantità eccessiva di memoria, senza però dar alcuna spiegazione del perchè questo fenomeno di sovrallocamento di memoria avvenga.

Per capire meglio le dinamiche sul perchè Chrome utilizzi circa il 20% in più di memoria per gestire la stessa applicazione, vi spiegherò brevemente come il motore di Chrome elabora le informazioni.
Innanzitutto partiamo col dire che il vostro dispositivo fa uso principalmente della CPU per elaborare le informazioni e della RAM, una memoria volatile e particolarmente veloce, nella quale la CPU legge e scrive temporaneamente i dati.

Ciò che rende Chrome particolarmente oneroso in termini di risorse è il fatto che la gestione dei processi “dati in pasto” alla CPU e memorizzati sucessivamente nella RAM avviene in un modo tutto suo, chiamato “process isolation”, facendo si che ogni singolo script, tab o plugin venga gestito in modo univoco, isolato ed indipendente dagli altri coesistenti nel sistema.

Ognuno di questi processi perciò ha necessità di allocare in maniera non condivisa risorse sulla memoria RAM, garantendo notevoli vantaggi in termini di prestazioni rispetto ai browser classici (single-process), sicurezza e stabilità del sistema.

Trattandosi di processi indipendenti ognuno di essi in caso di crash o rallentamento non impatterà sugli altri, così come in caso di vulnerabilità presente in un particolare script, essa non verrà diffusa agli altri processi.

In aggiunta ad ogni singolo processo aperto per la gestione di una particolare applicazione, script o tab, esistono poi altri processi comuni e di livello superiore atti alla gestione dei sotto processi ed alla implementazione di funzionalità avanzate per la gestione ad esempio del pre-rendering, un’importante processo che rende l’esperienza di navigazione più fluida e piacevole.
Questo particolare processo agisce in maniera preventiva, precaricando alcuni contenuti che secondo algoritmi prestabiliti potrebbero essere utili nel momento in cui ad esempio un utente effetui un click da una pagina verso un’altra. L’utilità delle funzioni di pre-rendering si notano particolarmente nei casi in cui un utente sia connesso alla rete mediante connettività non particolarmente veloci o ad esempio con tempi di latenza molto alti (Connessioni satellitari, WiMax, WiFi con scarso segnale o reti cablate con saturazione della banda).

Qualora la memoria RAM disponibile nel sistema non sia sufficiente tutto ciò impatta notevolmente sulle performances generali della navigazione stessa e non solo.

Quale è la soluzione da intrapprendere nel momento in cui Chrome sta impattando sulle performances?

Alcune regole di buon senso come ad esempio il prestare attenzione a non tenere aperte centinaia di Tabs non utilizzate potrebbe certamente aiutare ma spesso non tutti i tipi di utenza vogliono o possono applicare tale regola.

Un’altro utile trucco è quello di utilizzare una funzione ancora sperimentale di Chrome, presente dalla versione 46 in poi e chiamata “Automatic tab discarding” che in maniera automatica gestirà per voi la chiusura di processi inutilizzati da tempo per poi riaprirli immediatamente quando necessari.

Trattandosi di funzionalità sperimentali Google ha deciso di non renderla disponibile sul pannello di configurazione di Chrome ma basterà digitare sulla barra degli indirizzi il seguente url per potervi accedere:

chrome://flags/#enable-tab-discarding

Si aprirà quindi una pagina con numerosi parametri di configurazione con i quali si sconsiglia di giocare qualora non sappiate esattamente di cosa si tratti, pena l’instabilità del browser stesso.

Cercate quindi la voce “Automatic tab discarding” e cambiate il valore da “Default” a “Enable” cliccando sucessivamente su “Relaunch now” che effetuerà un riavvio del browser attivando la funzionalità.

Digitate ora sulla barra degli indirizzi:

chrome://discards/

vedrete una pagina riasssuntiva di tutti i singoli tabs/processi aperti, potrete quindi decidere di terminarli manualmente o lasciare che gli algoritmi di Google agiscano per voi.


Read also..

Comments