Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Page properties


Discussion threadhttps

Table of Contents

Status

Current state"Under Discussion"

...

...

...

...

...

hmn2fstyb2gvolmvn65tm8st9jokt08t
JIRA

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keyFLINK-16614

Release1.11


Table of Contents
Released:

Motivation

This FLIP suggests aligning the memory model and configuration for Job Manager (JM) with the recently introduced memory model of Task Manager (TM) in FLIP-49 .

The memory model of JM does not need to be as extensive as the TM one. A lot of motivation points in FLIP-49 are not applicable here. Nonetheless, apart of aligning two memory models, there are couple of explicit issues with the current memory settings of JM:

...

The size of JVM Metaspace is mostly driven by the requirements for the mentioned user code. Therefore, it may be hard to come up with its default value which covers all the use cases so it can be a point of tuning. Preliminary, it can be set to 128Mb256Mb.

JVM Overhead

All JVM and other off-heap memory consumption, which is not accounted for in other memory components, can be part of this JVM Overhead . This is mostly relevant for the containerised environments to derive the Total Process Memory and request the size of the JM container memory. The way of the JVM Overhead configuration can be the same as for TM. The size of the JVM Overhead can be a configured fraction of the Total Process Memory which is capped by its configured min and max values.  See also ' Configuration process' further .

...

Memory component

options

Default value

Total Process Memory

jobmanager.memory.process.size

None

(“1472m” in default flink-conf.yaml )

Total Flink Memory

jobmanager.memory.flink.size

None

JVM Heap

jobmanager.memory.heap.size

None

Off-heap memory

jobmanager.memory.off-heap.size

“128m”

JVM Metaspace

jobmanager.memory.jvm-metaspace.size

“256m”

JVM Overhead

jobmanager.memory.jvm-overhead.min

“192m”

jobmanager.memory.jvm-overhead.max

“1g”

jobmanager.memory.jvm-overhead.fraction

“192m”

“1g”

0.1

Implementation Steps

  1. Introduced new options
  2. Introduce data structures and utilities
    1. Data structure to store memory sizes of JM
    2. Utility for calculating memory sizes from configuration
  3. Extend the calculation utility and BashJavaUtils with generating JVM arguments to start JM process
  4. Call BashJavaUtils in the standalone startup scripts and use returned JVM arguments to start JM JVM process (ClusterEntryPoint) instead of current bash code
  5. Use new memory calculation utility to get the Total Process Memory size and the JVM arguments to start the JM container (ClusterEntryPoint) in the containerized environment

...