eG Monitoring
 

Measures reported by SSRSMemTest

Reporting Services responds to system resource constraints by adjusting the amount of memory that is allocated to specific applications and types of processing requests. Applications that run in the Report Server service and that are subject to memory management include:

  • The web portal, a Web front-end application for the report server.

  • Report Server Web service, used for interactive report processing and on-demand requests.

  • A background processing application, used for scheduled report processing, subscription delivery, and database maintenance.

Memory management policies apply to the Report Server service as a whole, and not to individual applications that run within the process.

If there is no memory pressure on the system, each server application requests some memory at startup, in advance of receiving requests, to deliver optimum performance when requests are eventually received. As memory pressure builds - i.e., as memory availability gradually navigates from a no pressure state to a low, medium, or high pressure state - the report server adjusts its process model, so requests can be prioritized, memory usage can be shrunk, and the pressure can be eased.

Sometimes, if the memory pressure is very high, the report server even resorts to dropping processing requests before they complete. Administrators can fine-tune configuration settings on the report server to make sure this does not happen. However, these settings need to be fine-tuned often, so they are in line with the dynamic memory demands of the report server. For this, administrators need to continuously track variations to the memory pressure state of the report server, figure out how often the server experiences memory contentions, and understand how severe the pressures were. This is where the SQL SSRSMemTest test helps!

This test reports the current memory pressure state of the report server. By tracking this measure over time, administrators can figure out if memory pressure remains steady at a particular state or if it oscillates between states. In addition, the test also reports how often in the last second the report server requested for memory usage to be shrunk and how much memory was shrunk in the process. These are good indicators of how often the report server experienced a memory crunch. Using these useful pointers, administrators can easily figure out which configuration settings on the report server need to be tweaked so that requests are not dropped.

Outputs of the test : One set of results for the report server being monitored.

The measures made by this test are as follows:

Measurement Description Measurement Unit Interpretation
Mem_preasure_stat Indicates the current memory pressure state of the report server.   The values that this test reports and their corresponding numeric values are discussed in the table below:

Measure Value Numeric Value
No Pressure 1
Low 2
Medium 3
High 4

To know how the report server processes requests at each of these memory states, refer to the table below:

Measure Value Description
No Pressure If there is no memory pressure on the system, each server application requests some memory at startup, in advance of receiving requests, to deliver optimum performance when requests are eventually received
Low Current requests continue to process. New requests are almost always accepted. Requests that are directed to the background processing application are given a lower priority than requests directed to the Report Server Web service.
Medium Current requests continue to process. New requests might be accepted. Requests that are directed to the background processing application are given a lower priority than requests directed to the Report Server Web service. Memory allocations for all three server applications are reduced, with relatively larger reductions to background processing to make more memory available for Web service requests.
High Memory allocation is further reduced. Server applications that request more memory are denied. Current requests are slowed down and take longer to complete. New requests are not accepted. The report server swaps in-memory data files to disk.

If memory constraints become severe and there is no memory available to handle new requests, the report server will return an HTTP 503 server unavailable error while current requests are completing. In some cases, the application domains might be recycled to immediately reduce memory pressure.

Note:

By default, this measure reports the Measure Values listed in the table above to indicate the current status of this index. The graph of this measure however, represents the same using the numeric equivalents.

Mem_preasure_stat Indicates the current memory pressure state of the report server.   The values that this test reports and their corresponding numeric values are discussed in the table below:
Mem_shrink_amount Indicates the size of memory in use that the report server requests to shrink. MB  
Mem_shrink_notify Indicates the number of notifications that the server issued in the last second to shrink the memory in use. Number A high value for this measure indicates that the memory pressure on the Report server is in high.

By tracking the value of this measure over time, you can figure out how often the server experienced memory pressure.

If the frequency of memory contentions increase, it could cause processing requests to be frequently dropped by the server without completing. To avoid this, you may want to fine-tune one/more of the following configurations:

  • WorkingSetMaximum : Specifies a memory threshold after which no new memory allocations requests are granted to report server applications. By default, the report server sets WorkingSetMaximum to the amount of available memory on the computer. This value is detected when the service starts. When the value for WorkingSetMaximum is reached, the report server does not accept new requests. Requests that are currently in progress are allowed to complete. New requests are accepted only when memory use falls below the value specified through WorkingSetMaximum.If existing requests continue to consume additional memory after the WorkingSetMaximum value has been reached, all report server application domains will be recycled.

  • WorkingSetMinimum : Specifies a lower limit for resource consumption; the report server will not release memory if overall memory use is below this limit. By default, the value is calculated at service startup. The calculation is that the initial memory allocation request is for 60 percent of WorkingSetMaximum.

  • MemoryThreshold : Specifies a percentage of WorkingSetMaximum that defines the boundary between high and medium pressure scenarios. If report server memory use reaches this value, the report server slows down request processing and changes the amount of memory allocated to different server applications. The default value is 90. This value should be greater than the value set for MemorySafetyMargin.

  • MemorySafetyMargin : Specifies a percentage of WorkingSetMaximum that defines the boundary between medium and low pressure scenarios. This value is the percentage of available memory that is reserved for the system and cannot be used for report server operations. The default value is 80.

    Although you can change the configuration settings, doing so will not improve report processing performance. The best way to improve server performance is to deploy the report server or individual report server applications on dedicated computers.