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

di Staff di Databricks

Archived. This article has not been updated since the publish date above. The dynamic nature of information means that previously accurate content can become outdated or even obsolete over time. Readers are advised to exercise due diligence and cross-check any information found in this blog post before making decisions or adopting any practices based on said information.

  • 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.

Report

Il playbook sull'AI agentiva per l'enterprise

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

Ricevi gli ultimi articoli nella tua casella di posta

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