In our SharePoint farm, our Web Front End servers all have loads of memory in "standby" mode, meaning very little is available for our IIS worker process.
We have 32 GB of RAM in each of the boxes, and standby memory will creep up to about 28 GB, whereas the IIS worker process only seems to be using about 2 GB. Also, we've seen the machine use the swap file extensively while this memory was in standby, so I am starting to think that this memory in standby mode is stopping IIS from using it, forcing it to swap to disk, causing more performance problems.
I used SysInternals RamMap to indentify what is being kept in memory, and it was able to tell me that almost everything in standby memory is of type "Mapped File".
When I sort the files listed under the file summary tab in RamMap by file size, the largest files (around a few hundred meg each) are IIS log files and SharePoint log files.
I would like to understand which process is loading these files into standby memory and why they are not being released. When I do an iisreset
, it does not release the memory.
Any ideas?
Thanks!
Standby memory is data that has been Cached into memory, and has not been modified since (though it may have been read) and can be dropped if required. It can be instantly freed up on demand. If the physical RAM was needed for anything else, the Standby memory would be dropped, its kept in memory on the off-chance it'll be needed again, and it'll be quicker to fetch from memory than disk.
All mapped files are backed by the page file, so if a process has a mapped view of a 2 GB file, it'll be backed by 2GB of page file. So if IIS is running and has a number of log files open for writing, its quite possible they'll be reserving space in the page file. This isn't a problem, and wouldn't adversely affect performance.
Windows is usually good about using memory when it is available, and releasing it when other processes require it. A "mapped file" does not use physical memory, but only virtual memory. A process can map a file to memory to access the file contents as if it were in memory - and this method can be faster than accessing the file through traditional methods. But again, this does not mean that the entire file is loaded into memory.
Are you seeing actual performance issues on the machine?
Can you post some of the stats from the "Performance" tab from Windows Task Manager?
2008 R2 has a real issue with memory running off to standby. Especially on Itanium boxes. "It's a known issue" is the reply I get from MS.