Portal Home > Knowledgebase > ABS Enterprise > StorageCraft Server Tuning


StorageCraft Server Tuning




Summary:

This article is intended for the administrators responsible for the implementation of StorageCraft software, including StorageCraft ShadowProtect and StorageCraft ImageManager. The article discusses different options that can be used to optimize servers for our software. Referencing this TechNet post:

“The rules/practices for setting page files on virtual memory systems has remained the same for years and years. What has changed is the cost to implement a solution. As noted earlier, the old method of calculation was built on the fact that memory was an expensive commodity when compared to the cost of the disk.”

Please note that the following are recommendations and not hard-set numbers for tuning servers. Recommendations are given for differing operating systems when applicable, so read carefully and implement the recommended settings according to your OS. See the bottom of this article for additional information on recommendations from Microsoft.

Instructions:

Use the following sections to help improve performance with your Windows server in regards to StorageCraft software.

Paging file

When the server is running low on memory and more is required immediately, the operating system uses hard drive space to simulate system RAM by swapping out memory pages not currently required. This is known as virtual memory and is often called the paging file. For the best performance of Windows, follow these rules:

    • Create a fixed size paging file that is 1.5 times the size of physical memory. Fixed size means the initial size and the maximum sizes have the same value. (Fig. 1)
Initial vs Maximum SizeFig.1 - Initial and Maximum Sizes screen.

 

    • Avoid placing a paging file on the system or boot drive.
    • Do not place paging files on separate partitions that are on the same physical disk.
    • Avoid placing a paging file on a fault-tolerant drive especially a mirrored (RAID-1) volume. Paging files do not need fault tolerance – they need speed.
 

Memory Management

Registry keys can be modified or created to help with memory management. Run regedit and locate the registry key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\MemoryManagement

Check the following values under this registry key:

LargeSystemCache:

A value of 1 maximizes the size of the system cache's working set and, with PagedPoolSize set to 192,000,000 and SystemPages set to 0, provides a large virtual address space for the cache, provided that Terminal Services and the /3GB switch are not used (per Microsoft at https://technet.microsoft.com/en-us/library/cc938581.aspx)

    • Modify the value and enter a value of 1 (hexadecimal). This will maximize the system's cache working set.

PagedPoolSize:

Typically a DWORD value for PagedPoolSize exists. If it does not exist, create a new DWORD value called PagedPoolSizeThe default setting calculates an optimal value for this entry based on the amount of physical memory in the computer, and it adjusts this value if the amount of memory changes. 

    • For Server 2008 and earlier: Modify the value and enter a value of 0xFFFFFFFF (hexadecimal) – that is eight F's.  This new setting calculates the maximum paged pool allowed for the system in this configuration.
    • For Server 2008 R2 and later: Modify the value and enter a value of 0x0b71b000 (hexadecimal).  This new setting calculates the maximum paged pool allowed for the system in this configuration.

PoolUsageMaximum:

Memory Manager trims paged pool allocations to help with optimization. It can be beneficial to be more aggressive on the trimming process. By default, trimming occurs at the 80% watermark and if the system is extremely active, it will cause delays in processing requests. The following setting will reduce this watermark to 60%, forcing housekeeping to kick in earlier:

    • Server 2008 and earlier: Create a new DWORD value called PoolUsageMaximum and specify a value of 60 (decimal).
    • Server 2008 R2 and later: Create a new DWORD value called PoolUsageMaximum and specify a value of 50 (hexadecimal).

SessionPoolSize:

Typically a DWORD value for SessionPoolSize exists. If it does not exist, create a new DWORD value called SessionPoolSize. TheSessionPoolSize is used to control the amount of memory alloted to each session in memory. The default value is 20 (MB). A slight increase will help improve data stored in each session. NOTE: While the registry keys SessionPoolSize and SessionViewSize do not depend directly on each other, Microsoft recommends that if you increase one of these Registry values, you increase the other. Microsoft does not recommend increasing memory over 512 between the SessionPoolSize and SessionViewSize values.

    • Modify the value and enter a value of 30 (hexadecimal).

SessionViewSize:

Typically a DWORD value for SessionViewSize exists. If it does not exist, create a new DWORD value called SessionViewSize.  The SessionViewSize is used to control the amount of memory alloted to each session in memory.  The default value is 20 (MB).  A slight increase will help improve data stored in each session. NOTE: While the registry keys SessionPoolSize and SessionViewSize do not depend directly on each other, Microsoft recommends that if you increase one of these Registry values, you increase the other.  Microsoft does not recommend increasing memory over 512 between the SessionPoolSize and SessionViewSize values.

    • Modify the value and enter a value of 44 (hexadecimal).
    • For additional tuning on this value, start at the default value of 20 and increase this value by multiples of 16 (MB) as needed. (e.g., 20, 36, 52, 68).

Lanman Server:

Registry keys for the LANMANServer can be modified or created to help with resource management. Run regedit and locate the registry key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters

Check the following values under this registry key.

Size:

A DWORD value for Size exists with a default value of 1.  The registry value of 1 means that the system will minimize memory used for I/O transfer.  

We suggest maximizing I/O throughput for file sharing and for network applications.  Use the following value to do so.

    • Modify the value and enter a value of 3 (decimal).

IRPStackSize:

Typically a DWORD value for IRPStackSize does not exist. This indicates that the default value of 15 is in effect. If it does not exist, create a new DWORD value called IRPStackSize.

The IRPStackSize specifies the number of stack locations in I/O request packets (IRP) in use by the operating system. If resource demands are a problem, increasing this value can benefit certain transports such as Media Access Control (MAC) drivers and file system drivers. Each stack uses 36 bytes of kernel memory for each receive buffer.  Valid range of values are 11 (0x0b hexadecimal) to 50 (0x32 hexadecimal).

    • Initially, we recommend starting with a value of 18 (hexadecimal). Do not use values between 32 and 36 (decimal), as these values have been known to cause issues with Windows.
    • If the problem with resources still persists after completing this procedure, increase the value by small increments (1-5 points).

TCPIP

Registry keys for the TCPIP can be modified or created to help with resource management. Run regedit and locate the registry key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Check the following values under this registry key.

StrictTimeWaitSeqCheck

This key tells the system to wait for TCPTimedWaitDelay to pass before reopening a socket.

    • For Server 2008 R2 and later: Create a DWORD with a value of 1 (hexadecimal).

TcpTimedWaitDelay

Determines the time that must elapse before TCP can release a closed connection and reuse its resources.

    • For Server 2008 R2 and later modify the value and enter a value of 0x0000001e (hexadecimal)

  MaxUserPort

Determines the highest port number TCP can assign when an application requests an available user port from the system.

    • For Server 2008 R2 and later modify the value and enter a value of 0x00007fff (hexadecimal)

 



Was this answer helpful?

Add to Favourites Add to Favourites    Print this Article Print this Article

Also Read