MemoryManager — Memory Management System

MemoryManager is an abstract base memory manager to manage shared memory for execution and storage.

Execution memory is used for computation in shuffles, joins, sorts and aggregations.

Storage memory is used for caching and propagating internal data across the nodes in a cluster.

A MemoryManager is created when SparkEnv is created (one per JVM) and can be one of the two possible implementations:

  1. UnifiedMemoryManager — the default memory manager since Spark 1.6.

  2. StaticMemoryManager (legacy)

Note
org.apache.spark.memory.MemoryManager is a private[spark] Scala trait in Spark.

MemoryManager Contract

Every MemoryManager obeys the following contract:

acquireStorageMemory

acquireStorageMemory(blockId: BlockId, numBytes: Long, memoryMode: MemoryMode): Boolean

acquireStorageMemory

Caution
FIXME

acquireStorageMemory is used in MemoryStore to put bytes.

maxOffHeapStorageMemory Attribute

maxOffHeapStorageMemory: Long
Caution
FIXME

maxOnHeapStorageMemory Attribute

maxOnHeapStorageMemory: Long

maxOnHeapStorageMemory is the total amount of memory available for storage, in bytes. It can vary over time.

Caution
FIXME Where is this used?

It is used in MemoryStore to ??? and BlockManager to ???

releaseExecutionMemory

releaseAllExecutionMemoryForTask

tungstenMemoryMode

tungstenMemoryMode informs others whether Spark works in OFF_HEAP or ON_HEAP memory mode.

It uses spark.memory.offHeap.enabled (default: false), spark.memory.offHeap.size (default: 0), and org.apache.spark.unsafe.Platform.unaligned before OFF_HEAP is assumed.

Caution
FIXME Describe org.apache.spark.unsafe.Platform.unaligned.

results matching ""

    No results matching ""