Databases Reference
In-Depth Information
Economic Memory Management Model
As mentioned at the beginning of this chapter, Analysis Services uses an economical
model to manage memory. It defines the price per kilobyte depending on the amount of
available memory. Analysis Services uses two configuration properties to assign the price
on memory: LowMemoryLimit and TotalMemoryLimit .
Analysis Services assigns the price to memory according to the scheme shown in Figure
27.1. Initially, the price of memory is zero, and all subsystems can allocate and release any
amount of memory they need for functioning. The memory remains free until the
amount of used memory reaches the LowMemoryLimit . After the amount of used memory
reaches the LowMemoryLimit , the price on memory starts to grow. It grows linearly from
zero to the value defined by the MidMemoryPrice configuration property—the memory
price at the midpoint between the LowMemoryLimit and TotalMemoryLimit . After the
amount of free memory reaches the midpoint, the price continues to grow, but it grows
with much greater speed until the amount of used memory reaches the TotalMemoryLimit
and the price reaches the HighMemoryPrice value. The price of memory can never exceed
HighMemoryPrice.
The memory price defines two important facts: how much memory Analysis Services can
allocate to execute a given operation, and how much memory a subsystem that uses the
memory has to release back to the server. Analysis Services is tuned to work with default
values of configuration properties, and we don't recommend you to change any values
without experimenting. If you see that your system uses an amount of memory close to
TotalMemoryLimit , you might want to experiment and increase the value of
MidMemoryPrice and HighMemoryPrice so that Analysis Services will clean memory more
intensively.
Server Performance and Memory Manager
Memory Manager is responsible for providing all servers' subsystems with memory. It allo-
cates memory, assigns the price to memory, and cleans memory that can be released when
the amount of used memory reaches a certain limit.
Memory Holders
Objects that allocate memory and provide it to different Analysis Services operations are
called memory holders . Each memory holder implements an interface that provides
Memory Manager with statistical information about the amount of memory used by a
memory holder and the percentage of allocated memory actively used to support server
operations. Periodically, the Memory Manager queries memory holders and collects its
statistics. You can send a DISCOVER_MEMORYUSAGE to the server and get information about
the current state of all memory holders, or you can use performance monitor counters to
monitor the general state of memory. (You cannot see the state of individual memory
holders with performance monitor counters.)
Search WWH ::




Custom Search