[Microsoft] Ordinati 1.401 GB di dati in un minuto. Battuto record di Yahoo!

Scritto il 24/05/2012 - 13:56 da Jessica Lambiase
|
Categorie:
Senza categoria
Tags:

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 chetest 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

Chi sono

Amministratrice e blogger di Chimera Revo fin dagli albori, mi occupo prevalentemente dei settori GNU/Linux e Sicurezza. Nella vita "reale" sono freelancer nel settore della sistemistica informatica, specializzata in networking e sicurezza.

  • Luigi_A

    Ciao Tanino volevo chiederti una cosa a te o a chiunque lo sappia.
    Parlo da completo ignorante in materia.
    Come viene riportato nell’articolo, questo algoritmo riesce ad ordinare 1401GB di dati in 60sec utilizzando 1033 dischi su 250 macchine, mentre l’algoritmo di Yahoo ordina 500GB utilizzando 5624 dischi su 1426 macchine. Ovviamente la differenza di prestazioni è notevolissima!!
    Però c’è anche una bella differenza di hardware.
    Come influiscono le due diverse configurazioni con i risultati?
    Dover interrogare 1426 computer che vanno a cercare i dati dentro 5624 dischi non richiede più tempo rispetto a dover interrogare solamente 250 computer che cercano in 1033 dischi?
    Per fare un paragone fra i due algoritmi non bisognerebbe utilizzare  lo stesso hardware?

    • http://www.siliconjey.com Jessica Lambiase

      Ciao!
      Purtroppo nell’articolo di microsoft non sono specificati i dettagli tecnici.. ma per l’esperienza che ho posso garantirti che la potenza di calcolo delle singole macchine è importante solo relativamente. Infatti, quando si parla di sistemi di calcolo distribuiti, prima di guardare la quantità di ram e il clock del processore del singolo computer si guarda all’architettura del sistema in toto, sistema inteso come insieme di computer… si guardano cose come la gestione del carico, la sincronizzazione dei task, la distribuzione delle risorse… insomma la potenza di calcolo di un sistema distribuito è da ricondurre più che altro al throughput di ogni singola macchina relativamente al compito del sistema completo, ossia a quanto lavoro utile riesce a svolgere in un’unità definita di tempo… ed in questo l’algoritmo (o gli algoritmi) di sincronizzazione e registrazione dati svolge un ruolo chiave.
      Spero di essere stata abbastanza chiara e di non essere piombata in un discorso da nerd:)

      • Luigi_A

        :D :D Penso che tu sei stata chiara, sono forse io che ci capisco poco/niente.
        Provo a spiegarti  come l’ho capita io.
        Nella mia mente facevo una specie di paragone.
        Supponiamo che io voglia ricostruire un’informazione composta da 10 frasi. Posso chiedere quest’informazione a 1 persona che mi dice tutte e 10 le frasi, oppure trovare 10 persone e farmi dire da ognuna una frase.
        In questo esempio sarebbe molto più rapido chiedere ad una sola persona che a 10 persone differenti, perchè evito di formulare 10 domande e di acquisire 10 risposte.
        Ovviamente nell’esempio le persone sono i computer e/o i dischi di cui si parla nell’articolo, le domande sono quella parte dell’algoritmo che interroga i computer e io dovrei essere quella parte dell’algoritmo che si occupa di ordinare i dati.
        Se non ho capito male la tua risposta, nel caso dell’articolo, la rapidità è da ricercarsi più che altro nella capacità dell’algoritmo di formulare rapidamente le domande alle 10 persone e nel formularle nel modo più chiaro possibile in modo tale che ogni persona mi risponda il prima possibile e nella maniera più corretta.

        • http://www.siliconjey.com Jessica Lambiase

          Hai colto nel segno! :)

          • Luigi_A

            ahaha! Perfetto professoressa, ho capito la lezione!

  • http://twitter.com/woddy68 coppa carlo

    Ah! Ah! Ah! Bing ora è il peggior motore di ricerca ! Fa piacere sapere che stanno lavorando-parlando?

    • Teo91

      Beh… per ora solo la versione in inglese è decente: tutte le altre riportano la scritta “beta”, cioè sotto il cofano è ancora il vecchio engine del defunto Live Search