Exchange Server 2013 Information Store and Extensible Storage Engine - Deeper Look
In Exchange Server 2013 they have
re-written the store code into managed C# code.Where there is new process called
Microsoft Exchange Store Worker.exe will get created for each database located
in the server. This can be seen on going to the task manager - process tab.
Each Microsoft.Exchange.Store.Worker.exe is mapped with process ID (PID) on it.
To find the database for which
database the Microsoft.Exchange.Store.Worker.exe holds can be verified using
the below powershell command
Get-MailboxDatabase -Status
| ft Name, WorkerProcessID
The
Microsoft.Exchange.Store.Service.exe will be used to manage the
Microsoft.Exchange.Store.Worker.exe process
Memory Calculation of Microsoft Exchange Store Worker Process.
Earlier version of Exchange we
have single Store.exe process which eats up the total memory of the Exchange
server. In Exchange server 2013 each Microsoft Exchange Store Worker Process
will have their own set of memory.
For Example: Server Detail:
Total Memory in the server:96 GB
Total Number of Database:12 DB
Number of Active Database:6 Active DB
Number of Passive Database:6 Passive DB
Max number of Database can turn Active in the server during disaster:9
Active DB + 3 Passive DB
The maximum number of active
database can be set using the powershell command
Set-MailboxServer -ID
-MaximumActiveDatabases
Detail Calculation:
Amount of Memory used for ESE is
25% RAM = 96*25/100 = 24 GB will be allocated for Max Cache
The
Microsoft.Exchange.Store.Service.exe distribute this 24 GB equally to total
number of Database (24 GB/12 DB = 2 GB RAM each DB)
RAM For Total Number of Active Database = 6 * 2 = 12 GB
RAM For Total Number of Passive Database it uses 20% of 2 GB RAM = 400
MB => 6 * 400 = 2.4 GB
RAM For Exchange server at Normal Condition = 6 Active DB + 6 Passive
DB = (6 * 2) + (6 * 400) = 14.4 GB
RAM For Exchange Server on Server disaster = 9 Active DB + 3 Passive DB = (9 * 2) + (3 *
400) = 19.2 GB
Divider = (MaximumActiveDatabases × 0.8) + (number of databases × 0.2)
Max Cache Target Per Worker = (Total ESE cache allocated from server
memory/Divider)
For instance, if you set the MaximumActiveDatabases to 9 for the
server in question, the calculation is now:
Divider = (9 × 0.8) + (12 × 0.2) = 7.2 + 2.4 = 9.6
Max Cache Target Per Worker = (24 GB/9.6) = 2.5 GB RAM
Total Sever RAM Cache Usage = (9 × 2.5 GB) + (3 × (2.5 GB*0.20)) =
22.5 + 1.5 = 24 GB (Passive copy utlize 20% of ESE cache of Active copy)
Hence in case if the Exchange
server 2013 doesn't able to provide 25% of RAM to ESE cache then Event ID 906
in the application of Warning message will be generated
Moral: The reason for increase from 2 GB RAM to 2.5 GB RAM for Each
Worker is reduce the footprint of I/O operation by holding more pages in the
memory. And also Exchange 2013 uses six pages in one large I/O in which the
each page size of 32 KB
No comments:
Post a Comment