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

<filename>Dell-Platform-Flags-PowerEdge-AMD-EPYC-v1.8</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 <kbd>randomize_va_space</kbd> 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 <kbd>/sys/kernel/mm/transparent_hugepage/enabled</kbd>.
      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 <kbd>/sys/kernel/mm/transparent_hugepage/defrag</kbd>.
      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 />
    <ul>
      <li>Minimum: By minimizing the delay time, it is ensured that the memory controller runs the REFRESH command at regular intervals.
      </li>
      <li>Performance: By enabling the CPU memory controller to delay running the REFRESH command, performance can be improved for some workloads.
      </li>
    </ul>
  </dd>
 
  <dt><br/><b>Memory Interleaving</b></dt>
  <dd>
    Default: Auto
    <br />
    <br />
    Memory interleaving is supported if a symmetric memory configuration is installed.
    When set to Disabled, the system supports Non-Uniform Memory Access (NUMA) (asymmetric) memory configurations.

    Operating Systems that are NUMA-aware understand the distribution of memory in a particular system and can
    intelligently allocate memory in an optimal manner. Operating Systems that are not NUMA-aware could allocate
    memory to a processor that is not local, resulting in a loss of performance. Die and Socket interleaving should
    only be enabled for Operarting Systems that are not NUMA-aware.
  </dd>

  <dt><br/><b>DIMM Self Healing on Uncorrectable Memory Error</b></dt>
  <dd>
    Default: Enabled
    <br />
    <br />
    Post Package Repair (PPR) on Uncorrectable Memory Error
    <br />
    Disabling this feature may improve memory performance for some workloads. 
  </dd>

  <dt><br/><b>Correctable Memory ECC SMI</b></dt>
  <dd>
    Default: Enabled
    <br />
    <br />
    Allows the system to log ECC corrected DRAM errors into the SEL log. Logging these rare errors
    can help identify marginal components; however the system will pause for a few milliseconds
    after an error while the log entry is created. Latency conscious customers may wish to disable
    this feature. Spare Mode, and Mirror mode require this feature to be enabled.
  </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>Virtualization Technology</b></dt>
  <dd>
    Default: Enabled
    <br />
    <br />
    When set to Enabled, the BIOS will enable processor Virtualization features and provide the virtualization
    support to the Operating System (OS) through the DMAR table. In general, only virtualized environments
    such as VMware(r) ESX (tm), Microsoft Hyper-V(r) , Red Hat(r) KVM, and other virtualized operating systems
    will take advantage of these features. Disabling this feature is not known to significantly alter the
    performance or power characteristics of the system, so leaving this option Enabled is advised for most cases.
  </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>L1 Stride Prefetcher</b></dt>
  <dd>
    Default: Enabled
    <br />
    <br />
    When set to Enabled, the processor provides additional fetch to the data access for an individual instruction
    for performance tuning by controlling the L1 stride prefetcher setting. Use the recommended setting, and this
    option will allow for optimizing overall workloads.
  </dd>

  <dt><br/><b>L1 Region Prefetcher</b></dt>
  <dd>
    Default: Enabled
    <br />
    <br />
    When set to Enabled, the processor provides additional fetch to data along with the data access to the given
    instruction for performance tuning by controlling the L1 region prefetcher setting. Use the recommended setting,
    and this option will allow for optimizing overall workloads.
  </dd>
  
  <dt><br/><b>L2 Up Down Prefetcher</b></dt>
  <dd>
    Default: Enabled
    <br />
    <br />
    When set to Enabled, the processor uses memory access to determine whether to fetch next or previous for all
    memory access for advanced performance tuning by controlling the L2 up/down prefetcher setting. Use the
    recommended setting, and this option will allow for optimizing overall workloads.
  </dd>
    
  
  <dt><br/><b>NUMA Nodes per Socket</b></dt>
  <dd>
    Default: 1 
    <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>ACPI CST C2 Latency</b></dt>
  <dd>
    Default: 800
    <br />
    <br />
    Enter in 18-1000 microseconds (decimal value).
    Larger C2 latency values will reduce teh number of C2 transitions and reduce C2 residency.
    Fewer transitions can help when performance is sensitive to the latency of C2 entry and exit.
    Higher residency can improve performance by allowing higher frequency boost and reduce idle core power.
    With Linux kernel 6.0 or later, the C2 transition cost is significantly reduced.
    The best value will be dependent on kernel version, use case, and workload.
  </dd>

  <dt><br/><b>System Profile</b></dt>
  <dd>
    Default: Performance Per Watt (OS)
    <br />
    <br />
    When set to a mode other than Custom, BIOS will set each option accordingly. When set to Custom, each option
    setting can be changed.
  </dd>

  <dt><br/><b>CPU Power Management</b></dt>
  <dd>
    Default: OS DBPM
    <br />
    <br />
    Allows selection of CPU power management methodology.
    <ul>
      <li>Maximum Performance: typically selected for performance-centric workloads where it is
           acceptable to consume additional power to achieve the highest possible performance for the computing environment.
           This mode drives processor frequency to the maximum across all cores (although idled cores can still be
           frequency reduced by C-state enforcement through BIOS or OS mechanisms if enabled). This mode also offers
           the lowest latency of the CPU Power Management Mode options, so is always preferred for
           latency-sensitive environments.</li>
      <li>OS DBPM: another performance-per-watt option that relies on the operating system to dynamically control
           individual frequency. Both Windows and Linux can take advantage of this mode to reduce frequency of idle
           or underutilized cores in order to save power.</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 control is supported), the processor
    can operate in all available Power States to save power, but may increase memory latency and frequency jitter.
  </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.
      <ul>
         <li>Disabled: no patrol scrubbing will occur.</li>
	 <li>Standard: the entire memory array will be scrubbed once in a 24 hour period.</li>
	 <li>Extended: the entire memory array will be scrubbed more frequently to further increase system 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.
  </dd>

  <dt><br/><b>Periodic Directory Rinse (PDR) Tuning</b></dt>
  <dd>
    Default: Auto
    <br />
    <br />
    Controls PDR settings that may impact the workload and processor performance
      <ul>
         <li>Auto: Same as Blended</li>
	 <li>Periodic (RefClock Based Floss Only): Rate based Directory Rinse.</li>
         <li>Blended (Cache Load Based Floss with Background RefClock Based Floss): Demand based Directory Rinse.</li>
      </ul>
  </dd>


  <dt><br/><b>Determinism Control</b></dt>
  <dd>
    Default: Auto
    <br />
    <br />
    Set to Manual to enable Determinism Slider Control. Read-only unless System Profile is set to Custom.
      <ul>
         <li>Auto: Use default performance determinism settings.</li>
	 <li>Manual: Specify custom power/performance determinism.</li>
      </ul>
  </dd>

  <dt><br/><b>Determinism Slider</b></dt>
  <dd>
    Default: Performance Determinism
    <br />
    <br />
    Controls whether BIOS will enable determinism to control performance. Read-only unless System Profile is set to Custom and Determinsim Control is set to Manual.
      <ul>
         <li>Performance: Workload performance is the same regardless of variations in the environment and silicon.</li>
	 <li>Power: Maximizes workload performance to part-specific power limits, thereby tapping the additional performance headroom based on the silicon. Maximum performance can be obtained by setting the TDP and Package Power Limit (PPL) to the maximum TDP value supported by the CPU.</li>
      </ul>
  </dd>

  <dt><br/><b>Optimizer Mode</b></dt>
  <dd>
    Default: Disabled
    <br />
    <br />
    Allows for automatic tunning maximizing the processor's performance based on system configuration and thermal environment. Requires the system to be configured in Power Determinism Mode.
      <ul>
         <li>Enabled: Enables the feature.</li>
         <li>Disabled: Turns off the feature.</li>
      </ul>
  </dd>

  <dt><br/><b>DF CState</b></dt>
  <dd>
    Default: Enabled
    <br />
    <br />
    This field enables/disables DF CState.
      <ul>
         <li>Enabled: Enables DF CState.</li>
         <li>Disabled: Disables DF Cstate.</li>
      </ul>
    <br />
    From AMD Tuning Guide:
      <ul>
         <li>Disabled: Prevents the AMD Infinity Fabric from entering a low-power state.</li>
         <li>Enabled: Allows the AMD Infinity Fabric to enter a low-power state.</li>
      </ul>
    (www.amd.com/content/dam/amd/en/documents/epyc-technical-docs/tuning-guides/58467_amd-epyc-9005-tg-bios-and-workload.pdf#page=11)
  </dd>

  <dt><br/><b>CPU Interconnect Bus Link Power Management</b></dt>
  <dd>
    Default: Enabled
    <br />
    <br />
    When Enabled, CPU interconnect bus link power management can reduce overall system power a
    bit while slightly reducing system performance.
  </dd>

  <dt><br/><b>Algorithm Performance Boost Disable (ApbDis)</b></dt>
  <dd>
    Default: Disabled
    <br />
    <ul>
       <li>Enabled: a specific hard-fused Data Fabric (SoC) P-state is forced for optimizing workloads
                    sensitive to latency or throughput. (For higher performance) </li>
       <li>Disabled: P-states will be automatically managed by the Application Power Management, 
                     allowing the processor to provide maximum performance while remaining within a specified
                     power-delivery and thermal envelope. (For power savings) </li>
    </ul>
  </dd>

  <dt><br/><b>CPPC</b></dt>
  <dd>
    Default: Auto
    <br />
    <ul>
       <li>Auto: Same as Enabled</li>
       <li>Enabled: Allows the OS to make performance/power optimization requests using ACPI (Advanced
                    Configuration and Power Interface) CPPC (Collaborative Processor Performance Control).</li>
       <li>Disabled: Prevents the OS from making performance/power optimization requests using ACPI CPPC.</li>
    </ul>
  </dd>

  <dt><br/><b>Adaptive Allocation (AA)</b></dt>
  <dd>
    Default: Auto
    <br />
    <ul>
       <li>Auto: Same as Disabled</li>
       <li>Enabled: Dynamically alters cache replacement and allocation policy based on application behaviors.</li>
       <li>Disabled: Uses a fixed L2 replacement/allocation policy, which may benefit highly-optimized, cache-aware codes.</li>
    </ul>
  </dd>

  <dt><br/><b>Fan Speed Offset</b></dt>
  <dd>
    Default: Off
    <br />
    <br />
    Configuring this option allows additional cooling to the server. In case hardware is added (example, new PCIe cards),
    it may require additional cooling.
    A fan speed offset causes fan speeds to increase (by the offset % value) over baseline fan speeds calculated
    by the Thermal Control algorithm.
  </dd>
</dl>
 
]]> 
</firmware>

</flagsdescription>
