Class ProcessMemoryUtils<FM extends FlinkMemory>

java.lang.Object
org.apache.flink.runtime.util.config.memory.ProcessMemoryUtils<FM>
Type Parameters:
FM - the FLink memory component structure

public class ProcessMemoryUtils<FM extends FlinkMemory> extends Object
Common utils to parse JVM process memory configuration for JM or TM.

The utility calculates all common process memory components from CommonProcessMemorySpec.

It is required to configure at least one subset of the following options and recommended to configure only one:

  • ProcessMemoryOptions.getRequiredFineGrainedOptions()
  • ProcessMemoryOptions.getTotalFlinkMemoryOption()
  • ProcessMemoryOptions.getTotalProcessMemoryOption()
Otherwise the calculation fails.

The utility derives the Total Process Memory from the Total Flink Memory and JVM components and back. To perform the calculations, it uses the provided ProcessMemoryOptions which are different for different Flink processes: JM/TM.

The utility also calls the provided FlinkMemoryUtils to derive FlinkMemory components from ProcessMemoryOptions.getRequiredFineGrainedOptions() or from the Total Flink memory. The concrete FlinkMemoryUtils is implemented for the respective processes: JM/TM, according to the specific structure of their FlinkMemory.

  • Constructor Details

  • Method Details

    • memoryProcessSpecFromConfig

      public CommonProcessMemorySpec<FM> memoryProcessSpecFromConfig(org.apache.flink.configuration.Configuration config)
    • deriveJvmMetaspaceAndOverheadFromTotalFlinkMemory

      public JvmMetaspaceAndOverhead deriveJvmMetaspaceAndOverheadFromTotalFlinkMemory(org.apache.flink.configuration.Configuration config, org.apache.flink.configuration.MemorySize totalFlinkMemorySize)
    • getMemorySizeFromConfig

      public static org.apache.flink.configuration.MemorySize getMemorySizeFromConfig(org.apache.flink.configuration.Configuration config, org.apache.flink.configuration.ConfigOption<org.apache.flink.configuration.MemorySize> option)
    • getRangeFraction

      public static RangeFraction getRangeFraction(org.apache.flink.configuration.MemorySize minSize, org.apache.flink.configuration.MemorySize maxSize, org.apache.flink.configuration.ConfigOption<Float> fractionOption, org.apache.flink.configuration.Configuration config)
    • deriveWithFraction

      public static org.apache.flink.configuration.MemorySize deriveWithFraction(String memoryDescription, org.apache.flink.configuration.MemorySize base, RangeFraction rangeFraction)
    • deriveWithInverseFraction

      public static org.apache.flink.configuration.MemorySize deriveWithInverseFraction(String memoryDescription, org.apache.flink.configuration.MemorySize base, RangeFraction rangeFraction)
    • generateJvmParametersStr

      public static String generateJvmParametersStr(ProcessMemorySpec processSpec)
    • generateJvmParametersStr

      public static String generateJvmParametersStr(ProcessMemorySpec processSpec, boolean enableDirectMemoryLimit)