<?xml version="1.0"?>
<!DOCTYPE flagsdescription SYSTEM "http://www.spec.org/dtd/cpuflags2.dtd">
<flagsdescription>

<filename>Dell-Platform-Flags-PowerEdge-AMD-EPYC-v1.12</filename>

<title>Platform Settings for Dell PowerEdge Servers</title>

<os_tuning>
 <![CDATA[

   <dl>

    <dt><b>kernel.randomize_va_space</b> (ASLR)</dt>
    <dd>
     This setting can be used to select the type of process address space
     randomization. Defaults differ based on whether the architecture supports
     ASLR, whether the kernel was built with the CONFIG_COMPAT_BRK
     option or not, or the kernel boot options used.<br>
     Possible settings:
     <ul>
        <li>0: Turn process address space randomization off.</li>
	<li>1: Randomize addresses of mmap base, stack, and VDSO pages.</li>
	<li>2: Additionally randomize the heap. (This is probably the default.)</li>
     </ul>
     Disabling ASLR can make process execution more deterministic and runtimes more consistent.
     For more information see the <code>randomize_va_space</code> entry in the
     <a href="https://www.kernel.org/doc/Documentation/sysctl/kernel.txt">Linux sysctl
	     documentation</a>.
    </dd>

    <dt><br><b>Transparent Hugepages (THP)</b></dt>
    <dd>
      THP is an abstraction layer that automates most aspects of creating, managing,
      and using huge pages. It is designed to hide much of the complexity in using
      huge pages from system administrators and developers. Huge pages
      increase the memory page size from 4 kilobytes to 2 megabytes. This provides
      significant performance advantages on systems with highly contended resources
      and large memory workloads. If memory utilization is too high or memory is badly
      fragmented which prevents hugepages being allocated, the kernel will assign
      smaller 4k pages instead. Most recent Linux OS releases have THP enabled by default.<br>
      THP usage is controlled by the sysfs setting <code>/sys/kernel/mm/transparent_hugepage/enabled</code>.
      Possible values:
      <ul>
         <li>never: entirely disable THP usage.</li>
	 <li>madvise: enable THP usage only inside regions marked MADV_HUGEPAGE using madvise(3).</li>
	 <li>always: enable THP usage system-wide. This is the default.</li>
      </ul>
      THP creation is controlled by the sysfs setting <code>/sys/kernel/mm/transparent_hugepage/defrag</code>.
      Possible values:
      <ul>
	 <li>never: if no THP are available to satisfy a request, do not attempt to make any.</li>
	 <li>defer: an allocation requesting THP when none are available get normal pages while requesting THP creation in the background.</li>
	 <li>defer+madvise: acts like "always", but only for allocations in regions marked MADV_HUGEPAGE using madvise(3); for all other regions it's like "defer".</li>
	 <li>madvise: acts like "always", but only for allocations in regions marked MADV_HUGEPAGE using madvise(3). This is the default.</li>
	 <li>always: an allocation requesting THP when none are available will stall until some are made.</li>
       </ul>
       An application that "always" requests THP often can benefit from waiting for an allocation until those huge pages can be assembled.<br>
       For more information see the <a href="https://www.kernel.org/doc/Documentation/vm/transhuge.txt">Linux transparent hugepage documentation</a>.
   </dd>

   <dt><br><b>drop_caches</b></dt>
   <dd>
   sysctl is used to change kernel parameters at run-time.
   <br>
   -w vm.drop_caches=3 - clears filesystem caches
   </dd>

    <dt><br><b>tuned-adm</b></dt>
    <dd>
    This command line utility allows you to switch between user definable tuning profiles.
    Several predefined profiles are already included. You can even create your own profile,
    either based on one of the existing ones by copying it or make a completely new one.i
    The distribution provided profiles are stored in subdirectories below /usr/lib/tuned
    and the user defined profiles in subdirectories below /etc/tuned. If there are profiles
    with the same name in both places, user defined profiles have precedence.
    <br>
    <br>
    Profiles Used:
    <ul>
	 <li><b>throughput-performance</b>: Broadly applicable tuning that provides excellent performance across a variety of common server workloads.</li>
	 <li><b>latency-performance</b>: Optimize for deterministic performance at the cost of increased power consumption.</li>
    </ul>
   </dd>

   </dl>
]]>
</os_tuning>

<firmware>
 <![CDATA[

<dl>
  <dt><br><b>DRAM Refresh Delay</b></dt>
  <dd>
    Default: Minimum
    <br>
    <br>
    By enabling the CPU memory controller to delay running the REFRESH commands, you can improve the performance for some workloads.
    By minimizing the delay time, it is ensured that the memory controller runs the REFRESH command at regular intervals.
    For Intel-based servers, this setting only affects systems configured with DIMMs which use 8 Gb density DRAMs.
    <ul>
      <li>Minimum: Memory controller runs REFRESH command at regular intervals.</li>
      <li>Performance: CPU memory controller delays running REFRESH commands for improved performance.</li>
    </ul>
  </dd>

  <dt><br><b>DIMM Self Healing (Post Package Repair) on Uncorrectable Memory Error</b></dt>
  <dd>
    Default: Enabled
    <br>
    <br>
    Enable/Disable Post Package Repair (PPR) on Uncorrectable Memory Error.
  </dd>

  <dt><br><b>Logical Processor</b></dt>
  <dd>
    Default: Enabled
    <br>
    <br>
    Each processor core supports up to two logical processors. When set to Enabled, the BIOS
    reports all logical processors. When set to Disabled, the BIOS only reports one
    logical processor per core. Generally, higher processor count results in increased
    performance for most multi-threaded workloads and the recommendation is to keep this enabled.
    However, there are some floating point/scientific workloads, including HPC workloads, where
    disabling this feature may result in higher performance.
  </dd>

  <dt><br><b>NUMA Nodes per Socket</b></dt>
  <dd>
    Default: 2
    <br>
    <br>
    Allows configuration of the memory NUMA domains per socket. The configuration can consist of one whole doman (NPS1),
    two domains (NPS2) or four domains (NPS4).
    <br>
    In the case of two-socket platforms, an additional NPS profile is available to have whole system memory be
    mapped as a single NUMA domain (NPS0).
  </dd>

  <dt><br><b>L3 cache as NUMA Domain</b></dt>
  <dd>
    Default: Disabled
    <br>
    <br>
    This field specifies that each CCX within the processor will be declared as a NUMA Domain.
  </dd>

  <dt><br><b>AMD CPU Speculative Store Mode</b></dt>
  <dd>
    Default: Auto
    <br>
    <br>
    Sets the mode that determines when store instructions send out their remote cache line copy invalidation.
    <ul>
      <li>Auto: Sending might be delayed when the cache line exists but is not in a writable state in the local cache.</li>
      <li>Balanced: Sending might be delayed when the cache line exists but is not in a writable state in the local cache.</li>
      <li>More Speculative: Sending will occur as soon as possible.</li>
      <li>Less Speculative: Sending might be delayed when the cache line is not present or is not in a writable state in the local cache.</li>
    </ul>
  </dd>

  <dt><br><b>L1 Stream HW Prefetcher</b></dt>
  <dd>
    Default: Enabled
    <br>
    <br>
    When set to Enabled, the processor provides advanced performance tuning by controlling the L1 stream HW prefetcher setting.
    Use the recommended setting, and this option will allow for optimizing overall workloads.
  </dd>

  <dt><br><b>L2 Stream HW Prefetcher</b></dt>
  <dd>
    Default: Enabled
    <br>
    <br>
    When set to Enabled, the processor provides advanced performance tuning by controlling the L2 stream HW prefetcher setting.
    Use the recommended setting, and this option will allow for optimizing overall workloads.
  </dd>

  <dt><br><b>Secure Memory Encryption</b></dt>
  <dd>
    Default: Enabled
    <br>
    <br>
    Enables or disables AMD secure encryption features such as Secure Memory Encryption (SME) and Secure Encrypted Virtualization (SEV). In
    addition to enabling this option, SME must be supported and activated by the operating system. Similarly, SEV must be supported and
    activated by the hypervisor. This option also determines if other secure encryption feature such as TSME and SEV-SNP features can be enabled.
  </dd>

  <dt><br><b>Memory Tracking Granularity</b></dt>
  <dd>
    Default: Auto
    <br>
    <br>
    <ul>
      <li>Auto: Finer-Grain</li>
      <li>Finer-Grain: Finer-Grain tracking enables higher memory efficiency and is expected to be the preferred performance option.</li>
      <li>Coarser-Grain: Coarser-grain tracking may improve memory performance for a narrow set of workloads.</li>
    </ul>
  </dd>

  <dt><br><b>C-States</b></dt>
  <dd>
    Default: Enabled
    <br>
    <br>
    C-States allow the processor to enter lower power states when idle.
    <br>
    When set to Enabled (OS controlled) or when set to Autonomous (if Hardware controlled is supported), the processor
    can operate in all available Power States to save power, but may increase memory latency and frequency jitter.
    Read-only unless System Profile is set to Custom.
    <ul>
      <li>Enabled: OS controlled C-States.</li>
      <li>Disabled: Disables C-States.</li>
      <li>Autonomous: Hardware controlled C-States (if supported).</li>
    </ul>
  </dd>

  <dt><br><b>Core CC6</b></dt>
  <dd>
    Default: Enabled
    <br>
    <br>
    Control Core CC6 entry when ACPI C2 state is used or halt is issued.
  </dd>

  <dt><br><b>CPPC</b></dt>
  <dd>
    Default: Auto
    <br>
    <br>
    Enabled/Auto: Allows the OS to make performance/power optimization requests using ACPI CPPC.
    Disabled: Prevents the OS from making performance/power optimization requests using ACPI CPPC.
    <ul>
      <li>Auto: Same as Enabled - uses the default CPPC behavior.</li>
      <li>Enabled: Allows the OS to make performance/power optimization requests using ACPI CPPC.</li>
      <li>Disabled: Prevents the OS from making performance/power optimization requests using ACPI CPPC.</li>
      <li>SMU Configuration: SMU controls CPPC configuration.</li>
    </ul>
  </dd>

  <dt><br><b>CPU Power Management</b></dt>
  <dd>
    Default: OS DBPM
    <br>
    <br>
    Allows selection of CPU power management methodology.
    Read-only unless System Profile is set to Custom.
    <ul>
      <li>Maximum Performance: Drives processor frequency to the maximum across all cores. This mode also offers the lowest latency of the CPU Power Management Mode options.</li>
      <li>OS DBPM: OS dynamically controls individual core frequency that can be utilized for power savings.</li>
    </ul>
  </dd>

  <dt><br><b>DF CState</b></dt>
  <dd>
    Default: Enabled
    <br>
    <br>
    This field enables/disables DF (Data Fabric) CState.
    <ul>
      <li>Enabled (0xF): Enables DF CState.</li>
      <li>Disabled (0x0): Disables DF CState.</li>
      <li>SMU Configuration: SMU controls DF CState configuration.</li>
    </ul>
  </dd>

  <dt><br><b>Determinism Control</b></dt>
  <dd>
    Default: Auto
    <br>
    <br>
    Read-only unless System Profile is set to Custom.
    <ul>
      <li>Auto: Use default performance determinism settings.</li>
      <li>Power Determinism: Maximizes workload performance to part-specific power limits, thereby tapping the additional performance headroom based on the silicon. If you are using Power determinism, then you can obtain maximum performance by setting the TDP and Package Power Limit (PPL) to the maximum TDP value supported by the CPU. Setting the TDP and PPL to Auto sets both parameters to the CPU default TDP value for energy-efficient operation.</li>
      <li>Performance Determinism: Makes the workload performance the same regardless of variations in the environment or silicon.</li>
    </ul>
  </dd>

  <dt><br><b>Memory Patrol Scrub</b></dt>
  <dd>
    Default: Standard
    <br>
    <br>
    Patrol Scrubbing searches the memory for errors and repairs correctable errors to prevent the accumulation of memory errors.
    Read-only unless System Profile is set to Custom.
    <ul>
      <li>Disabled: No patrol scrubbing will occur.</li>
      <li>Standard: Entire memory array scrubbed once in a 24 hour period.</li>
      <li>Extended: Entire memory array scrubbed more frequently for increased reliability.</li>
    </ul>
  </dd>

  <dt><br><b>PCI ASPM L1 Link Power Management</b></dt>
  <dd>
    Default: Enabled
    <br>
    <br>
    When enabled, PCIe Advanced State Power Management (ASPM) can reduce overall system power a bit while slightly reducing
    system performance. NOTE: Some devices may not perform properly (they may hang or cause the system to hang) when ASPM is
    enabled; for this reason L1 will only be enabled for validated qualified cards.
    <ul>
      <li>Enabled: Reduces system power with slight performance reduction.</li>
      <li>Disabled: No power reduction, maintains performance.</li>
    </ul>
  </dd>

  <dt><br><b>PCIE Idle Power Setting</b></dt>
  <dd>
    Default: Optimize for Perf/Power
    <br>
    <br>
    Modify PCIE Power Savings Features that Can Impact Lightly Loaded Latency.
  </dd>

  <dt><br><b>TDP Control</b></dt>
  <dd>
    Default: Auto
    <br>
    <br>
    Allows the reconfiguration of the processor Thermal Design Power (TDP) levels based on the power and thermal delivery capabilities of the system.
    TDP refers to the maximum amount of power the cooling system is required to dissipate.
    Auto: Use platform and OPN default TDP. Manual: Set custom configuration TDP.
    NOTE: This option is only available on certain SKUs of the processors, and the number of alternative levels varies as well.
    <ul>
      <li>Auto: Use platform and OPN default TDP.</li>
      <li>Manual: Set custom configuration TDP.</li>
    </ul>
  </dd>

  <dt><br><b>Customized cTDP</b></dt>
  <dd>
    This option appears when TDP Control is set to Manual for customizing Thermal Design Power (TDP) in watts (decimal).
    The manual TDP should align with OPN design. The default value is the microprocessor's nominal TDP while this can be adjusted
    lower to minimize power consumption at the cost of peak performance or higher to increase peak performance by allowing the CPU
    to maintain higher dynamic clock speeds at the cost of power efficiency.
  </dd>

  <dt><br><b>PPT Control</b></dt>
  <dd>
    Default: Auto
    <br>
    <br>
    Enables or disables the Package Power Tracking (PPT) control. Auto: Automatically set PPT in watts. Manual: Specify a custom PPT.
    <ul>
      <li>Auto: Automatically set PPT in watts.</li>
      <li>Manual: Specify a custom PPT.</li>
    </ul>
  </dd>

  <dt><br><b>Customized PPT</b></dt>
  <dd>
    This option appears when PPT Control is set to Manual for customizing Package Power Tracking (PPT) in watts (decimal).
    PPT should not exceed the configured TDP.
  </dd>

  <dt><br><b>Power Profile Select</b></dt>
  <dd>
    Default: Efficiency Mode
    <br>
    <br>
    <ul>
      <li>High Performance Mode: In this mode, preference is given to core performance. All DF P-States are available in this mode and the default DF P-State and DLWM algorithms are active.</li>
      <li>Efficiency Mode (default): In this mode, the system is configured for power efficiency, which limits the frequency available to cores and restricts DF P-States available in the system.</li>
      <li>Maximum IO Performance Mode: In this mode, Data Fabric is configured to maximize IO sub-system performance.</li>
      <li>Balanced Memory Performance Mode: This mode uses High Performance Mode when the system is under heavy load, and Efficiency Mode when the system is under lighter loads.</li>
      <li>Balanced Core Performance Mode: This mode uses High Performance Mode when the system is under heavy load, and Efficiency Mode when the system is under lighter loads.</li>
      <li>Balanced Core Memory Performance Mode: This mode combines memory subsystem behavior from Balanced Memory Performance Mode and core behavior from Balanced Core Performance Mode.</li>
    </ul>
  </dd>

  <dt><br><b>System Profile</b></dt>
  <dd>
    Default: Performance Per Watt Optimized (OS)
    <br>
    <br>
    This field sets the System Profile to Performance Per Watt (OS), Performance, or Custom mode.
    When set to a mode other than Custom, BIOS will set each option accordingly. When set to Custom, you can change setting of each option.
    <ul>
      <li>Performance Per Watt Optimized (OS): Optimizes for performance per watt with OS control.</li>
      <li>Performance: Sets all options for maximum performance.</li>
      <li>Custom: Allows manual configuration of individual options.</li>
    </ul>
  </dd>

  <dt><br><b>Optimizer Mode</b></dt>
  <dd>
    Default: Disabled
    <br>
    <br>
    Dell's Optimizer mode adds automatic tuning maximizing the processor's performance based on system configuration and thermal environment.
    For AMD platforms optimizer mode will only function when the determinism option is set to power determinism.
    <ul>
      <li>Enabled: Enables automatic tuning for processor performance.</li>
      <li>Disabled: Turns off the feature.</li>
    </ul>
  </dd>
</dl>

]]>
</firmware>

</flagsdescription>
