Visualizzare video con risoluzione costantemente in crescita, utilizzare giochi sempre più complessi, sfruttare sistemi operativi ogni giorno più onerosi…
La fame di potenza computazionale e memoria dei software che girano quotidianamente sui nostri smartphone non sembra fermarsi mai, con tutte le difficoltà del caso.
Byung-Gon Chun e Petros Maniatis, ricercatori alla Intel, ci mostrano quale potrebbe essere un possibile futuro in cui le scarse risorse hardware dei telefoni non dovrebbero rappresentare più un problema.
Come accennato nel cappello introduttivo, si moltiplica giornalmente il software che mette alle corde le risorse hardware degli odierni smartphone, limitati in termini di potenza computazionale, memoria, e riserve di energia rispetto ai più corazzati sistemi desktop.
Diverse sono le strade che possono portare alla soluzione di tale problema, prima fra tutte l’evoluzione tecnologica (si pensi a chip come lo SnapDragon che sembra raggiunga prestazioni paragonabili ai processori della famiglia Atom). Ma qualcuno preferisce seguire percorsi meno ovvi come, ad esempio, i due ricercatori della Intel citati in precedenza che, in un paper intitolato “Augmented Smartphone Applications Through Clone Cloud Execution”, presentano la propria strategia per ovviare alla scarsità di risorse nei dispositivi portatili.
Due sono le premesse fondamentali dello studio:
- Con gli odierni laptop, desktop e server si ha a disposizione un’enorme quantità di risorse hardware che, grazie al proliferare di mezzi per la comunicazione (reti 3G e superiori, WiFi, WiMax…), risultano essere facilmente accessibili.
- Le tecnologie di virtualizzazione ed esecuzione remota hanno fatto passi da gigante e, grazie all’affidabilità ottenuta, sono correntemente usate in sistemi di produzione.
Da qui nasce l’idea alla base dell’architettura proposta: l’applicazione affamata di risorse verrà sempre fatta girare all’interno dello smartphone, ma in esso risiederà anche un motore di esecuzione (execution engine) capace di “aumentare” le risorse a disposizione del dispositivo delegando a smartphone virtuali remoti (cloni perfetti del device fisico dal punto di vista software, ma che girano in sistemi con risorse hardware superiori) le attività più critiche dal punto di vista computazionale. I risultati dell’elaborazione effettuata dallo smartphone o dagli smartphone virtuali verranno poi restituiti al device fisico per la presentazione all’utente, il tutto in maniera completamente trasparente.
L’idea di sfruttare risorse remote per sopperire alle carenze locali non è nuova nella storia dell’informatica: la novità principale consiste nell’utilizzare un insieme di device virtuali (la Clone Cloud che da il titolo al documento) per mostrare a utente e sviluppatore un illusorio dispositivo che travalica i propri limiti fisici. Sottolineo il termine “sviluppatore” perchè l’idea sarebbe quella di far gestire tutto in automatico dall’execution engine, senza che chi scrive l’applicazione debba cambiare il modo di programmare.
I ricercatori hanno individuato cinque diversi scenari in cui la strategia di augmented execution, che potremmo maccheronicamente tradurre con “esecuzione potenziata”, potrebbe essere applicata:
- Primary functionality outsourcing: è lo scenario più semplice. L’applicazione avida di risorse viene divisa in una parte computazionalmente poco onerosa (come, ad esempio, la gestione dell’interfaccia utente) che viene mantenuta nello smartphone e in un’altra più pesante che viene remotizzata verso la nuvola di cloni secondo richieste sincrone, in maniera simile a quanto accade in un’architettura thin client-server. Un esempio di applicazione potrebbe essere un software di riconoscimento vocale.
- Background augmentation: questo scenario considera tutte quelle applicazioni che non necessitano di un’interazione continua con l’utente, ma possono essere eseguite in background come, ad esempio, virus scanning o indexing di documenti. In questo caso l’intero processo può essere delegato alla controparte virtuale, che potrebbe svolgere il suo compito anche quando lo smartphone fisico risulta spento: segue poi una sincronizzazione finale dei risultati tra dispositivo virtuale e fisico.
- Mainline augmentation: un caso a metà strada tra i due visti in precedenza. L’augmented execution può essere effettuata o meno a seconda di quel che accade all’interno dell’applicazione. Ad esempio, il software potrebbe decidere di bloccarsi localmente in seguito a un input potenzialmente insicuro e far eseguire il codice pericoloso allo smartphone virtuale che funzionerebbe da “cavia”.
- Hardware augmentation: uno scenario in cui l’applicazione locale verrebbe eseguita da un clone remoto dello smartphone con risorse hardware superiori al dispositivo fisico, magari basato anche su un’architettura diversa (in maniera tale da evitare l’overhead computazionale dell’emulazione).
- Augmentation through multiplicity: probabilmente lo scenario più complicato definito ambiziosamente dagli autori del documento come un modo per prevedere il futuro. L’applicazione lanciata localmente viene fatta girare su più cloni virtuali ognuno dei quali potrebbe prendere un percorso d’esecuzione diverso: tale strategia potrebbe essere utile per l’elaborazione parallela, ma anche, come accennato prima, per valutare le possibili conseguenze di una scelta. Si pensi, banalmente, a un’applicazione di scacchi: per valutare le implicazioni di una mossa l’intelligenza artificiale potrebbe utilizzare un certo numero di cloni remoti, ognuno dei quali elaborerebbe una serie di mosse differente. Portando l’esempio in un territorio più interessante si può pensare a un algoritmo di scheduling di processi che può trarre vantaggio dalla conoscenza dello stato futuro per ottimizzare il consumo della batteria.
Ma quale è il processo che porta dall’esecuzione di un software in una macchina locale all’esecuzione dello stesso software in un ambiente distribuito formato da cloni dello smartphone possibilmente vitaminizzati? Vediamone i passi, aiutandoci con la seguente immagine:
- Un perfetto clone dello smartphone viene creato all’interno della nuvola.
- Lo stato del telefono locale è periodicamente sincronizzato con quello del clone (anche su richiesta).
- L’applicazione, o pezzi di essa, viene eseguita all’interno del clone.
- I risultati del clone sono nuovamente sincronizzati nello smartphone fisico.
Una possibile architettura che implementa tale processo potrebbe essere la seguente:
Nello smartphone fisico si individuano due componenti (il Controller e il Replicator) che agiscono a livello di sistema operativo: il Replicator si occupa di sincronizzare i cambiamenti di stato del dispositivo locale verso il clone, mentre il Controller si occupa di invocare un’esecuzione remota di codice nel clone e di gestire i risultati che si otterranno. Per quanto riguarda i componenti che risiedono all’interno del clone troviamo un altro Replicator, che agisce in maniera speculare a quello nel device fisico, e l’Augmenter, incaricato di eseguire il codice proveniente dallo smartphone reale e di restituire i risultati al Controller.
Tutto quanto sopra esposto non è semplice teoria: per la sperimentazione i ricercatori Intel hanno già implementato parte dell’architettura su dispositivi con piattaforma Android. Ovviamente esistono ancora numerose questioni irrisolte che necessitano di ulteriore studio; tra questi troviamo:
- L’individuazione in maniera efficace ed efficiente dei vari pezzi di software che hanno necessità di maggiore potenza computazionale e quindi destinati all’esecuzione nella nuvola. Si sta pensando alla creazione di un insieme di politiche, in maniera da scegliere in ciascun scenario la più adatta alla situazione.
- La creazione di un meccanismo performante, sia in termini di occupazione di banda che di consumo della batteria, per effettuare la sincronizzazione.
- La creazione di un meccanismo che possa governare correttamente e senza spreco di risorse l’esecuzione del software in un sistema distribuito.
- L’elaborazione di un modo tramite il quale le applicazioni possano facilmente sfruttare delle risorse hardware virtuali.
Nonostante le difficoltà che indubbiamente si presentano, gli autori dello studio considerano enormi le opportunità che si aprono per i dispositivi mobili seguendo un approccio di questo tipo.
Per chi desiderasse approfondire l’argomento qui trovate il documento originale da cui è stato tratto questo articolo.