During a full-text population, it is possible for fdhost.exe or sqlservr.exe to run low on memory or to run out of memory. If the full-text crawl log shows that fdhost.exe is being restarted often or that error code 8007008 is being returned it means one of these processes is running out of memory. If fdhost.exe is producing dumps, particularly on large, multi-CPU computers, it might be running out of memory.
The amount of memory required by the fdhost.exe process for a population depends mainly on the number of full-text crawl ranges it uses, the size of inbound shared memory (ISM), and the maximum number of ISM instances.
The amount of memory (in bytes) consumed by the filter daemon host can be roughly estimated by using the following formula:
number_of_crawl_ranges
* ism_size * max_outstanding_isms * 2
The default values of the variables in the preceding formula are as follows:
|
Variable
|
Default value
|
|---|
|
number_of_crawl_ranges
|
The number of CPUs
|
|
ism_size
|
1 MB for x86 computers
4 MB, 8 MB, or 16MB for x64 computers, depending on the total physical memory
|
|
max_outstanding_isms
|
25 for x86 computers
5 for x64 computers
|
The following table presents guidelines about how to estimate the memory requirements of fdhost.exe. The formulas in this table use the following values:
-
F, which is an estimate of memory needed by fdhost.exe (in MB).
-
T, which is the total physical memory available on the system (in MB).
-
M, which is the optimal max server memory setting.
Important: |
|---|
|
For essential information about the formulas, see 1, 2, and 3, below.
|
|
Platform
|
Estimating fdhost.exe memory requirements in MB—F1
|
Formula for calculating max server memory—M2
|
|---|
|
x86 with AWE disabled
|
F = Number of crawl ranges * 50
|
M = minimum(T, 2000) – F – 500
|
|
x86 with AWE enabled
|
F = Number of crawl ranges * 50
|
M = T – F – 500
|
|
x64 or IA643
|
F = Number of crawl ranges * 10 * 8
|
M = T – F – 500
|
1 If multiple full populations are in progress, calculate the fdhost.exe memory requirements of each separately, as F1, F2, and so forth. Then calculate M as T – sigma(Fi).
2 500 MB is an estimate of the memory required by other processes in the system. If the system is doing additional work, increase this value accordingly.
3 .ism_size is assumed to be 8 MB for x64 platforms.
Example: Estimating the Memory Requirements of fdhost.exe
This example is for an AMD64 computer that has 8GM of RAM and 4 dual core processors. The first calculation estimates of memory needed by fdhost.exe—F. The number of crawl ranges is 8.
F = 8*10*8=640
The next calculation obtains the optimal value for max server memory—M. The total physical memory available on this system in MB—T—is 8192.
M = 8192-640-500=7052
Example: Setting max server memory
This example uses the sp_configure and RECONFIGURE Transact-SQL statements to set max server memory to the value calculated for M in the preceding example, 7052:
USE master;
GO
EXEC sp_configure 'max server memory', 7052;
GO
RECONFIGURE;
GO
To set the max server memory configuration option