Proper availability of resources is critical to StayLinked Server performance. With the popularity of virtualization, server environments can be loaded on shared hardware, providing on-demand, dynamic, or limited resources to the server operating system.
Even with near-instant adjustments, dynamic resource allocation may not provide adequate service for some applications. For this reason, StayLinked Windows and Linux Server installations of v15.1 build 208 and newer utilize the OpenJ9 Java runtime which has proven more resilient to resource issues than can cause prior server builds issues in environments that are virtualized or underpowered.
The following recommendations have proven effective for use with the pre-build 206 Server installation and Java runtime. It is important that you consult the provider of your virtualization software for their documentation and best practices that affect an enterprise-level just-in-time Java process like StayLinked.
In order to ensure stability of the Java Virtual Machine utilized by StayLinked we recommend configurations implemented similar to those described below. Please note that your virtualization product may have a different interface or version but should have similar configuration options available.
The settings below are references from the “Enterprise Java Applications on WMWare Best Practices” Guide provided by VMware.
In our lab, we used a vSphere interface for VMware ESXi version 5.5.0
Memory – Set a reservation for all memory (RAM) allocated to this VM. This memory should not be shared with other VMs. This adheres to VMware’s recommendations for Setting memory reservations for virtual machine needs.
(Best Practice No. 5 found on page 10 of Enterprise Java Applications on VMware Best Practices Guide in the below link)
Time – Set the VMware ESXi host time to NTP under Configuration -> Time Configuration.
Clock – Configure the guest clock to synchronize with the host clock in support of Java Thread Scheduling.
CPU Cores – Allocate a minimum of physical cores as described in the Server Tuning Guide or as defined in the minimum system requirements for your server platform to ensure optimal garbage collection. Note that two dedicated CPU Cores is the minimum requirement for even small installations of StayLinked for proper JVM garbage collection. Larger installations may require additional dedicated cores.
VM vCPU Overcommit – According to Best Practice number 2 on page 7 of the Enterprise Java Applications on VMware Best Practices Guide, it is important for performance-critical enterprise Java applications that the total number of vCPUs assigned to all of the virtual machines does not cause greater than 80% CPU utilization on the ESX/ESXi host.
Hyper Threading and CPU Allocation – Virtual Cores should not be shared with other VMs, setting the Sharing mode to ‘None’ to disable hyper-threading.
Using affinity settings, allocate contiguous cores to your VM. This allocates 4 hyper-threaded vCPUs to the 2 Cores selected above, but only 2 will be used if hyper-threading is disabled. Note that the first core starts at number 0 and not 1.
For VMs running on a DRS cluster, Scheduling Affinity is not an option. DRS will, by default, distribute VMs to other resources if a particular ESXi has a high load. The latency caused by this feature can cause delays in resource allocation to StayLinked. Any VM running on a DRS cluster should have Latency Sensitivity set to a value of ‘High’ for the most reliable StayLinked performance.
You can find this setting by going to VM → Edit Settings → VM Options → Advanced
The following VMware thread discusses this configuration in detail:
https://blogs.vmware.com/performance/2016/11/latency-sensitive-vms-and-drs.html
CPU MHz – Finally, reserve all CPU MHz to this partition since CPU resources should not be shared with other VMs.
Share the post "Server Tuning Guide – Tuning Virtualized Servers"