Passa al contenuto principale

Cos'è il tungsteno?

Come il progetto Tungsten ottimizza il motore di esecuzione di Spark con un utilizzo più intelligente della memoria, algoritmi basati sulla cache e generazione di codice per avvicinare le prestazioni al bare metal

10 Personas Artificial Intelligence

Summary

  • Scopri come Tungsten si concentra sul miglioramento dell'efficienza di memoria e CPU nel motore di esecuzione di Spark per avvicinarsi ai limiti hardware moderni per le applicazioni Spark.
  • Scopri le principali iniziative di Tungsten, tra cui la gestione esplicita della memoria, il calcolo basato sulla cache, la generazione di codice e la riduzione dei dispatch di funzioni virtuali.
  • Scopri come tecniche come il mantenimento dei dati intermedi nei registri della CPU, l'unrolling dei loop e il supporto SIMD offrano notevoli accelerazioni per i carichi di lavoro Spark SQL e DataFrame.

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.

LEADER PER LA 5ª VOLTA

Gartner®: Databricks leader dei database cloud

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

Non perdere mai un post di Databricks

Iscriviti al nostro blog e ricevi gli ultimi post direttamente nella tua casella di posta elettronica.