Passa al contenuto principale

Tungsten

Prova Databricks gratis

Che cos'è il progetto Tungsten?

Tungsten è il nome in codice del progetto che si propone di apportare modifiche al motore di esecuzione di Apache Spark, con l'obiettivo di migliorare sensibilmente l'efficienza della memoria e della CPU per le applicazioni Spark, per portare le prestazioni più vicine ai limiti dell'hardware moderno.

Il progetto Tungsten prevede le seguenti iniziative:

  • Gestione della memoria ed elaborazione binaria: sfruttare la semantica delle applicazioni per gestire la memoria in maniera esplicita ed eliminare le risorse aggiuntive per modello di oggetti JVM e Garbage Collection
  • Calcolo sensibile alla cache: algoritmi e strutture di dati per sfruttare la gerarchia della memoria
  • Generazione di codice: usare la generazione di codice per sfruttare i moderni compilatori e processori (CPU)
  • Nessun dispacciamento di funzioni virtuali: questo approccio riduce le molteplici chiamate alla CPU che possono incidere molto sulle prestazioni quando il dispacciamento viene effettuato miliardi di volte.
  • Dati intermedi in memoria o nei registri della CPU: Tungsten Phase 2 colloca i dati intermedi nei registri della CPU. Questa operazione riduce drasticamente il numero di cicli per ottenere i dati dai registri della CPU invece che dalla memoria
  • Loop unrolling e SIMD: Il motore di esecuzione di Apache Spark può essere ottimizzato per sfruttare i compilatori moderni e la capacità della CPU di compilare ed eseguire in modo efficiente semplici cicli for (rispetto a complessi grafici di chiamata delle funzioni).

L'attenzione all'efficienza della CPU è motivata dal fatto che i carichi di lavoro di Spark sono sempre più rallentati dall'uso della CPU e della memoria invece che dalle comunicazioni I/O e di rete. Questa tendenza è confermata da recenti studi sulle prestazioni dei carichi di lavoro con Big Data.

Risorse aggiuntive

Torna al Glossario