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

<filename>IBM_AIX_7.3_S.xml</filename>

<title>IBM Power AIX 7.3 Flags file </title>

<style>
<![CDATA[
body { background: white; }
]]>
</style>

<!-- =====================================================================
  Information about the meaning of boot-time settings, BIOS options,
  kernel tuning, and so forth can go in the 'platform_settings' section.

  They'll be appended to the end of both the flags dump and per-result flag report.

  As the contents should be HTML, it will save lots of time to just enclose
  the whole thing in a CDATA section.  Section 2.3.1 again.
     ===================================================================-->
<submit_command>
<![CDATA[
<ul>
<li> Each process was bound to a cpu using submit= with the bind command
<pre> 
submit = bindprocessor $BIND; $system_alloc_override $command;
</pre> </li>
<li> bindprocessor: The bindprocessor command binds or unbinds the kernel threads of a process, or lists available processors. If simultaneous multi-threading is enabled, each hardware thread of a physical processor is listed as a separate processor by the bindprocessor command. This allows software threads to be bound to each hardware thread separately.
<pre>
      $BIND
       A reference to a value from the bind line, a line of the form "bind = n n n n", where each "n" is a processor number. 
       See  <a href="http://www.spec.org/cpu2017/Docs/config.html#bind">http://www.spec.org/cpu2017/Docs/config.html#bind </a>

	  $system_alloc_override
       Helps in setup tcmalloc for base run

     $command
       Actually runs the benchmark with the specified input
</pre>
</li>
</ul>
]]>
</submit_command>

<sw_environment>
<![CDATA[

<ul>
<li> OS Version: AIX 7.3 TL0 SP2 running on Power10</li>

<li>Environment variables that can be set before the run:
<pre>
MALLOCMULTIHEAP=1:Controls the number of heaps within the process private segment.

MEMORY_AFFINITY=MCM: The operating system provides memory affinity by organizing its data structures along module boundaries. The default memory allocation policy rotates among the MCMs. In order to obtain preferential local MCM memory allocation, we set the MEMORY_AFFINITY environment variable to MCM.

XLFRTEOPTS=intrinthrds=1 : Causes the Fortran runtime to only use a single thread.

LIBPATH="path-containing-libtcmalloc_minimal.a"/: Tells the linker where to find shared libraries from. 

MALLOCTYPE=user:libtcmalloc_minimal.a: Provides an option to choose Tcmalloc instead of regular system malloc
</pre></li>

<li> Configure  the I/O buffer size for the read and write system calls generated by cp,mv,cat, cpio commands to be 512KB. This is also applicable for stream buffering. Command that performs this function.
<pre>
AIX_STDBUFSZ=524288
</pre>
This variable is not set by default. They can be set to an integer value that specifies the buffer size in bytes, KB, MB. Limits: The minimum limit is 64 bytes and the maximum limit is 127 MB.
</li>
<li> To reserve 57600 huge pages out of the physical memory pool (75 pages per copy), each large page size being 16MB, issue the following command,
<pre>
vmo -p -o lgpg_regions=57600 -o lgpg_size=16777216
</pre> 
</li>
</ul>

]]>
</sw_environment>

<os_tuning>
<![CDATA[

<ul>
<li> <kbd>ulimit -s unlimited</kbd> 
Sets the maximum stack size to "<kbd>unlimited</kbd>".</li>
<li> <kbd>ulimit -f unlimited</kbd>
Sets the maximum file size to "<kbd>unlimited</kbd>".</li>
<li> <kbd>ulimit -c unlimited</kbd>
Sets the maximum core size to "<kbd>unlimited</kbd>".</li>
<li> <kbd>ulimit -d unlimited</kbd>
Sets the maximum data segment size to "<kbd>unlimited</kbd>".</li>
<li> <kbd>ulimit -m unlimited</kbd>
Sets the maximum memory size to "<kbd>unlimited</kbd>".</li>
<li> Mount Option to Not Update Access Time-   
For filesystems with a high rate of file access, performance can be improved by disabling the update of the access time stamp. This option can be added to a filesystem by using the "-o noatime" mount option as follows: mount -o remount,noatime /dev/hd1
</li>
</ul>
]]>


</os_tuning>

<firmware>
<![CDATA[

<p> Power Mode is settable at the Advanced System Management menu that controls the trade-offs between power efficiency, frequency, and consistency. Three modes are available: </p>
<ul>
<li> Enable Static mode : 
<p> The processor clock frequency will be set to its fixed, nominal value.</p></li>
<li> Enable Power Saving mode : 
<p>  Enabling this feature reduces power consumption by lowering the processor clock frequency and voltage to fixed values. This reduces the power consumption of the system while delivering predictable performance.</p></li>
<li> Enable Maximum Performance mode : 
<p>Enabling this feature causes the processor frequency to vary based on workload and active core count. As the workload/active core count decreases, the processor uses less power, which enables the frequency to be increased above nominal. In this mode, the allowed socket power is increased to the maximum value, which results in top performance along with increased fan noise and higher power consumption. In more stressful environmental conditions, performance may vary.</p></li>
</ul>
]]>
</firmware>

</flagsdescription>
