
Sono notizie come queste che ci ricordano che l’informatica non è fatta soltanto di smartphones, di tablets, di Windows 8 e di RAM video. In un’era in cui la scena informatica è accessibile più o meno da tutti, e in cui la stragrande maggioranza dell’attenzione mediatica è rivolta verso il nuovo telefono, o il nuovo sistema operativo, o ancora il nuovo social network… si finisce spesso per perdere di vista cosa c’è dietro.
Il problema dell’ordinamento, da decenni, rappresenta – oltre che un argomento su cui gli algoritmisti perdono letteralmente ciocche di capelli – una delle unità di misura più “vecchie“, ma al contempo più valide, per misurare l’efficienza: un algoritmo che riesce ad ordinare una serie di dati in due minuti è di gran lunga più efficiente di un altro algoritmo che ordina gli stessi dati in 3 minuti.
Senza addentrarci in discorsi tecnici, per farmi capire ancora meglio, voglio farvi una domanda: usereste un motore di ricerca che impiega 3 secondi a restituire i risultati che desiderate… o uno che ne impiega 8? Utilizzereste un programma che mette in ordine alfabetico 4.500 nomi in 5 secondi… o uno che impiega un secondo e mezzo ad ordinarne lo stesso numero?
Alla base c’è sempre e comunque un algoritmo. Diciamo che alla base di qualsiasi cosa c’è un algoritmo. In maniera del tutto generica, possiamo tranquillamente affermare che un algoritmo altro non è che “una maniera di fare qualcosa”.
Dopo questo minimo di infarinatura teorica passiamo alla notizia vera e propria: un team di 9 persone, appartenenti a Microsoft Research, è riuscito a mettere a punto un algoritmo che – test di benchmark alla mano (MinuteSort benchmarking) – riesce ad ordinare 1.401 GB di dati in 60 secondi (utilizzando 1033 dischi su 250 macchine), battendo il record che Yahoo! ha imposto nel 2009 con i suoi 500GB (utilizzando 5624 dischi su 1426 macchine). A conti fatti… un miglioramento del 1600%, la strategia di Microsoft è ben 16 volte più efficiente di quella di Yahoo!. Un occhio anche ai dati in input/output: in media, il sistema distribuito di Microsoft (parliamo sempre di 250 macchine collegate) riesce a prendere in input circa 2GB di dati a secondo, restituendone in output altrettanti. Da brividi.

Il team Microsoft Research (mancano Owen Hoffman e Reuben Olinsky). Da sinistra: Jon Howell, Jeremy Elson, Ed Nightingale, Yutaka Suzue, Jinliang Fan, Johnson Apacible, Rich Draves
La strategia utilizzata è stata battezzata FDS (flat datacenter storage) il cui criterio, in linea di massima, è praticamente l’opposto della strategia gerarchica: in quest’ultima ogni macchina fa capo alle macchine sottostanti, ridistribuendo ricorsivamente i compiti fino ad ottenere il risultato desiderato; i dati da macchina a macchina, inoltre, viaggiano in maniera monodirezionale (una serie di computer sono atti a gestire i dati in entrata, altri i dati in uscita). L’approccio FDS è l’esatto contrario: praticamente ci si basa sull’idea che tutti facciano tutto, e che i dati possano viaggiare in qualsiasi direzione. Tramite un algoritmo ben preciso ed una serie di accorgimenti (che, però, a noi comuni mortali non è dato conoscere… :P ) il team Microsoft è riuscito ad ottenere i famigerati “1.401 GB di dati ordinati in 60 secondi”.
Questo tutto a favore del motore di ricerca Microsoft Bing!: l’approccio FDS potrebbe essere utilizzato per renderlo decisamente più performante e più efficiente di quanto sia adesso, al fine di dare un bel po’ di filo da torcere al suo concorrente eterno Google. Ciononostante, però, il team è cosciente del fatto che bisognerà adattare la tecnologia in uso a quella con cui FDS è riuscito ad ottenere il successo e battere il record: chissà, forse tra qualche anno…
Intanto i nostri migliori auguri vanno ai magnifici nove!
source: Microsoft Research