The Server Hardware

Many server manufacturers have their own 'Low Latency Tuning' recommendations. DataCore always recommends following such recommend settings unless they contradict anything recommended below. Note that server manufacturers may use different names or terminology for the settings.
Collaborative Power Control
This should always be Disabled where possible as it overrides many of the BIOS settings listed in this section by the OS and its power plan.
Command per Clock (CPC Override/Mask)
This should be enabled as it can increase the overall speed of memory transfer.
Hemisphere Mode
Hemisphere mode can improve memory cache access both to and from the memory controllers, but the server hardware usually must have memory modules of the same specification to take advantage of this setting. This should be set to Automatic.
Intel Turbo Boost
Turbo Boost should be Disabled. This CPU feature allows over-clocking of individual cores for higher single-thread performance, while at the same time, other cores are put into a power- saving mode to not exceed the processor’s energy and heat budget. Those clock speed variations contradict SANsymphony’s Poller architecture which expects equal clock speeds on all cores of a system. The OS reschedules SANsymphony’s Poller threads on the best available cores multiple times per second. Core clock speed differences lead in extreme cases to massive differences in execution times, eventually leading to erratic behavior that impacts SANsymphony's I/O processing and performance.
Non-Uniform Memory Access (NUMA)
Snoop options - Enable the Early Snoop option (if available).
Cluster options - Disable all NUMA Cluster option settings.
In case the core count per socket exceeds 64 cores (if hyper-threading is on, this applies to the logical core count), then NUMA must be enabled!
Advanced Encryption Standard Instruction Set
This should be enabled as it is utilized for Virtual Disk encryption.
Secure Boot
This is supported with SANsymphony 10.0 PSP13 and newer, it must be disabled on older installations of SANsymphony.
Power Management Settings
Power saving/C-States - Disable any C-states ('C0' State) or power saving settings. SANsymphony relies on the CPUs being available all the time and not having to wait while the CPU is 'woken up' from an idle state. Those wake-up times lead to the same issues as described in paragraph Intel Turbo Boost.
Static High – If available, set the power management settings to static high to disable any additional CPU power saving.

All x64 processors (except for Intel’s Itanium family) are supported for use in a DataCore Server. DataCore recommends using ‘server-class’ CPUs than those intended for ‘workstation' use.
The Speed of CPUs
DataCore Software has not found any significant performance differences between CPU manufacturers for processors that share similar architectures and frequencies.
Even so, faster (i.e., higher frequency) CPUs are always preferred over slower ones as they can process more instructions per second. DataCore also prefers using the fastest cores, when possible rather than more-but-slower cores. Please consult your server vendor to see if any additional CPU Sockets are necessary to be able to use all the available PCIe/Memory- Sockets on the server’s motherboard.
Hyper-Threading (Intel)
For Intel CPUs manufactured after 2014, DataCore recommends that Hyper-Threading is Enabled as testing has shown this can help increase the number of threads for SANsymphony's I/O Scheduler, allowing more I/O to be processed at once. For earlier Intel CPUs, DataCore recommends that Hyper-Threading be Disabled as testing has shown that older CPUs operate at a significantly lower clock speed per hyperthreaded core and result in a disadvantage to the single thread performance expected by SANsymphony’s Poller threads.
What is the Recommended Number of CPUs in a DataCore Server?
At least 2 logical processors for the base SANsymphony Software are required. This is the absolute minimum requirement not allowing significant IO performance and is not recommended in production. Production grade systems should always have 4 or more logical processors configured following the below recommendations for optimal performance at the lowest possible latency.
- 1 additional logical processor for each fibre channel port.
- 3 additional logical processors for each pair of iSCSI ports. Software ISCSI connections in general have a much larger overhead compared to fibre channel ports, mainly due to the extra work required encapsulate/de-encapsulate of SCSI data to/from IP packets.
- 1 additional logical processor for both the Live and Performance Recording features.
- 2 additional logical processors for the (Asynchronous) Replication feature.
- 1 additional logical processor per IO port to support Inline Deduplication and Compression (ILDC) under full load conditions.

Running SANsymphony alongside Hyper-V (Windows only)
Only the Hosts are running in Virtual Machines, the SANsymphony software is still installed on a 'physical' server. Follow the recommendations in the previous section but consider that an additional logical processor may be needed to manage the Hyper-V software and Host VMs. Please consult Microsoft’s Hyper-V documentation for more information.
Running SANsymphony inside a Virtual Machine
The DataCore Servers and Hosts are all running on Virtual Machines. In this case, treat 'logical processor' requirements as 'virtual processor' (vCPU) requirements. Consideration must be taken though about the allocation of resources to all other Hosts and how the resources of the Hypervisors 'physical' CPUs are shared between Host VMs and the VMs used for DataCore Servers. Even if the same number of vCPUs were to be created to match those of an equivalent physical DataCore Server, there is still no guarantee that all these vCPUs would be used at the same rate and throughput as physical CPUs. Make sure to guarantee CPU and RAM access for the SANsymphony Virtual Machine at any given time by setting up appropriate resource reservations.
Also see:

The Amount of System Memory
The minimum amount of memory for a DataCore Server is 8GB. The recommended amount of memory for a DataCore Server depends entirely on the size and complexity of the SANsymphony configuration.
Use the ‘DataCore Server Memory Considerations’ document available from the Support Website to calculate the memory requirement for the type, size, and complexity of the SANsymphony configuration, always allowing for plans of future growth.
Also see:
DataCore Server Memory Considerations
The Type of System Memory
To avoid any data integrity issues while I/O is being handled by the DataCore Server’s own Cache, ECC Memory Modules should be used.
If a Server CPU uses NUMA architecture, then all the physical memory modules should have the same specification. See the NUMA Group Size Optimization and Hemisphere Mode entries from the BIOS section for more information.

BIOS
- Collaborative power control should be disabled.
- CPC Override/Mask should be enabled.
- Hemisphere Mode should be set to Automatic.
- Intel Turbo Boost should be disabled.
- NUMA Group Size Optimization/Node Interleaving should be enabled and set to Flat (if the option is available).
- Advanced Encryption Standard instruction set support should be enabled.
- Secure Boot should be disabled for PSP12 and earlier.
- Power saving (C-states) should all be disabled but Static High should be enabled.
CPU
Generally
- Use ‘server class’ processors.
- Use less-but-faster cores rather than more-but-slower cores.
- Enable Hyper-Threading (Intel) on CPUs from 2014 or newer.
- Disable Hyper-Threading (Intel) on CPUs older than 2014.
Physical DataCore Servers
- At least 4 logical processors for the base SANsymphony Software. You can install the software using just 2 logical processors, but this is a minimum requirement
- 1 additional logical processor for each fibre channel port.
- 3 additional logical processors for each pair of iSCSI ports. Software ISCSI connections in general have a much larger overhead compared to fibre channel ports, mainly due to the extra work required encapsulate/de-encapsulate of SCSI data to/from IP packets.
- 1 additional logical processor for both the Live and Performance Recording features.
- 2 additional logical processors for the (Asynchronous) Replication feature.
- 1 additional logical processor per IO port to support ILDC.
Hyperconverged DataCore Servers
-
Running SANsymphony alongside Hyper-V (Windows only)
- Follow the recommendations as for Physical DataCore Servers with additional logical processors required for the Hyper-V software.
-
Running SANsymphony inside a Virtual Machine
- Follow the recommendations as for Physical DataCore Servers (substitute 'logical' with 'virtual' processors) consideration must be taken for all other 'Host' VMs so that the DataCore Server VM and Host VMs are not competing for resources.
Power
- Use redundant power supplies.
- Use an uninterruptable power supply (UPS).
System Memory
- See ‘DataCore Server Memory Considerations’ from the Support Website.
- Use ECC Memory.
- Enable CPC Settings.