Monday, November 12, 2012

Configuring the Windows registry - Increase Memory Performance


Specifying TCP/IP settings

If the parallel engine is installed on a computer that runs Microsoft Windows Server, Standard or Enterprise edition, specify settings for TCP/IP in the Windows Registry to ensure that the required number of parallel processes can run concurrently.

Before you begin
Log in to Windows Server as the Administrator.
Start the Registry Editor, and back up the Windows Registry. If you plan to make several changes (for example, to configure the parallel engine), create a single backup before you make all the changes.

About this task

You specify TCP/IP settings by editing the following registry values in the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters registry subkey:
MaxUserPort
Specifies the maximum port number for ephemeral TCP ports.
TcpNumConnections
Specifies the maximum number of concurrent connections that TCP can open. This value significantly affects the number of concurrent osh.exe processes that are allowed. If the value for TcpNumConnections is too low, Windows cannot assign TCP ports to stages in parallel jobs, and the parallel jobs cannot run.
These keys are not added to the registry by default.

Procedure
In the Registry Editor, select the following registry subkey:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
Specify the following registry values: MaxUserPort and TcpNumConnections.
If the registry value does not exist, click Edit > New > DWORD Value, and type the name of the registry value.
In the right pane of the Registry Editor, right-click the registry value, and click Modify.
In the Base area, select Hexadecimal.
In the Value data field, specify the following values:
Registry value name Value data Valid range
MaxUserPort 65534 5000 - 65534 (decimal)
TcpNumConnections 65534 0 - 0xfffffe (65534 decimal)
Click OK.

Editing the boot.ini file

By default, Windows reserves 2 GB of memory for the kernel and 2 GB of memory for user mode programs. When the /3GB switch is specified in the boot.ini file, 3 GB of memory is reserved for user mode programs, and the amount of kernel memory is reduced by 1 GB. This setting results in an insufficient amount of memory for the kernel. To resolve this problem, remove the /3GB switch, if present, from boot.ini file.
In addition, on servers that have more than 4 GB of physical memory installed, specify the /PAE switch in the boot.ini file. The /PAE switch specifies physical address extensions that allow a 32-bit processor to access memory that is above the 4 GB limit.

Procedure
Click Start > Control Panel > System.
In the System Properties window, click the Advanced tab. 
In the Startup and Recovery area, click Settings.
Click Edit to edit the boot.ini file.
Remove the /3GB switch, if present.
On servers that have more than 4 GB of physical memory installed, add the /PAE switch to the boot.ini file.
Save and close the boot.ini file.
Click OK twice, and then close the Control Panel window.

Setting the threshold for de-committing memory

When Windows frees memory at a specific address, the memory can remain committed, or it can be de-committed and marked as reserved. You can improve memory management on computers that have 1 GB or more of RAM by editing the HeapDeCommitFreeBlockThreshold registry value in the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager registry subkey. This registry value specifies the number of contiguous bytes of memory (around the address of the freed memory) above which the block of memory is de-committed.

Procedure
In the Registry Editor, select the following registry subkey:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
Specify the value data for HeapDeCommitFreeBlockThreshold registry value:
If the registry value does not exist, click Edit > New > DWORD Value, and type the name of the registry value.
In the right pane of the Registry Editor, right-click the registry value, and click Modify.
In the Base area, select Hexadecimal.
In the Value data field, specify 0x00040000.
Click OK.

Enabling auto-tuning for system page size

To support virtual to physical address translation, the Windows operating system uses page tables and page table entries (PTEs). These tables reside in kernel memory. If not enough memory is allocated for the page tables, Windows might fail to create processes, threads, and I/O buffers. Because the parallel engine creates many processes to run a job, jobs will fail at startup or during run time if Windows does not have enough resources to create processes.

You can enable auto-tuning at server startup by editing the SystemPages registry value in the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management registry subkey.

Procedure
In the Registry Editor, select the following registry subkey:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\
Memory Management
In the right pane of the Registry Editor, right-click SystemPages, and click Modify.
In the Base area, select Hexadecimal.
In the Value data field, specify 0 (zero). Typically, specifying 0 for this value provides sufficient memory. If the available PTEs are exhausted, however, you can specify the maximum value, 0XFFFFFFFF. If you must specify a value other than 0, the value data for PagedPoolSize must be 0.
Click OK.

Enabling auto-tuning for paged pool size

The Windows Server kernel allocates memory in pools. These pools are known as the paged pool and the non-paged pool. Performance degradation and server instability might result if the memory for these pools is exhausted. To avoid this situation, you can enable auto-tuning at server startup by editing the PagedPoolSize registry value in the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management registry subkey.

Procedure
In the Registry Editor, select the following registry subkey:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\
Memory Management
In the right pane of the Registry Editor, right-click PagedPoolSize, and click Modify.
In the Base area, select Hexadecimal.
In the Value data field, specify 0 (zero). If 0 is already specified, auto-tuning is enabled, and you do not need to change this value. If you must specify a value other than 0, the value data for SystemPages must be 0.
Click OK.

No comments:

Post a Comment