MicroStrategy ONE
Basic Memory Concepts
This is a very brief summary of the memory basics. For more detail on this, see Memory.
Virtual memory is Physical memory (RAM) + Disk Page file (also called the swap file). It is shared by all processes running on the machine including the operating system.
The user address space (UAS) is independent of virtual memory and is of finite size. It is measured per process on the machine (such as the MSTRSVR.exe Intelligence Server application). In 64-bit Windows, the theoretical amount of virtual address space is 264 bytes (16 exabytes), but only a small portion of the 16-exabyte range is actually used. The 8-terabyte range from 0x000'00000000 through 0x7FF'FFFFFFFF is used for user space, and portions of the 248-terabyte range from 0xFFFF0800'00000000 through 0xFFFFFFFF'FFFFFFFF are used for system space.
Virtual bytes. measures the use of the UAS. When virtual bytes reaches the UAS limit, it causes a memory depletion.
The Commit Limit in Windows Task Manager is not equal to Virtual bytes.
Private bytes reflect virtual memory usage, and they are a subset of allocated virtual bytes.
To help determine what is causing memory depletion, answer these questions:
- How is the project being used? Are there very complex reports? Reporting on very large data sets?
- Is the Scheduler being used heavily? Are many reports running on a single schedule? Is there a schedule that runs during the peak usage time?
- What is the prompted/non-prompted report mix?
- How is the History List used? Are there many messages?
- Is there high user concurrency?
- Is there high job concurrency (either jobs or large reports)?
- Are the governor settings too high for working set, XML cells, result set, and so on?
To answer these questions, you must be familiar with the system and how it is being used (Enterprise Manager reports will help you with this). But perhaps most useful is to know what the system was doing when the memory depletion occurred. To answer this question, use:
- The Windows Performance Monitor (see Memory) to characterize memory use over time. Examine it in relation to job and user concurrency. Typically, log these counters:
- Process / Virtual Bytes (MSTRSVR process)
- Process / Private Bytes (MSTRSVR process)
- Process / Thread Count (MSTRSVR process)
- MicroStrategy Server Jobs / Executing Reports
- MicroStrategy Server Users / Open Sessions
- Are there spikes in memory? Large reports or exports being executed? Is there an upward trend over time?
- The
DssErrors.log
file for details about what was happening when the memory depletion occurred (see Configure What is Logged) - Your knowledge of the system and whether the top memory consumers are heavily used