Tuning Guide for StorageCraft Software on Servers

Article Number: 
241

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 PagedPoolSize. The 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)

 

Additional Information and Resources

Below are some additional references from Microsoft on some of their Best Practices for Server Performance:

Server 2012

Hardware

Cache and Memory

Storage Subsystems

Tuning per Server Roles

Tuning for Workloads

Comments

STC-Court

  We had a client recently

 

We had a client recently that ran into errors from within ShadowProtect stating that there were not enough resources to complete the backup.  This was a Server 2003 SBS running Exchange.  After going through this server tuning guide he would get about a days worth of backups and then run into the same problem.  He dug into the resource management of the server a bit more and this was his solution:

Server 2003 running Exchange it is recommended that you use the /3GB switch in the boot.ini to dedicate more towards user applications and less towards the system.

BUT – if the server is also a domain controller (SBS or not) they advise you don’t use the /3GB switch but at the expense of Exchange not having access to as much memory.

There is another switch that can be used with /3GB called /Userva that subtracts a little bit of memory from the /3GB and dedicates it to the page pool.

The Microsoft KB article below tells you how to user the Performance Monitor to see how many Free System Page Tables are available. It’s says below 7,000 is too few (ours was around 5,000 free) and that the target free is around 24,000.

I used the /Userva=3030 switch and now I sit around 16,000 free and no backups have failed since putting the change in. I’ve adjusted the /Userva to 3000 but have not rebooted yet and that should put me around the 24,000 mark they recommended be free.

Article:  http://support.microsoft.com/kb/810371

KarenHeinz

Thank you for posting this

Thank you for posting this iinformative post here. I love to hear new words along with detailed information. That was  a great time to be  a part of this site. I appreciate your work.

lbates

If the registry settings

If the registry settings outlined in the Tuning Guide are a "good" idea, then pray tell why doesn't the ShadowProtect installer just go ahead and make the necessary changes during installation.  You are already making 100's of registry entries, how hard would it be to make these few more?  Making us manually make these changes on every server is IMHO a collasal waste of time.

Terms and Conditions of Use - Privacy Policy - Cookies