Forum Discussion

wojciech's avatar
wojciech
Helper II
8 months ago
Solved

Total Memory Used for Semantic Model Refresh

Hi,   I have workspace monitoring enabled to capture stats about semantic model refresh. Having studied SemanticModelLogs table in Monitoring KQL Databse I have produced this query: SemanticModel...
  • Zanqueta's avatar
    8 months ago

    Hello wojciech,

     

    Your analysis is correct: the value of 23.14 GB shown as TotalMemoryGB does not represent the actual memory required for the entire refresh. It is simply the sum of the peak memory usage for each individual table. These peaks do not occur simultaneously, so this figure is not a reliable indicator of the real memory footprint during refresh.

    Why does this happen?

    • Each table has its own mashup process, and MashupPeakMemory reflects the peak during that table’s transformation.
    • The refresh process is sequential (or partially parallel), but it never consumes the sum of all peaks at once.
    • What truly matters is the maximum concurrent memory usage during the refresh, which is not directly available in the log.

    How can you estimate the required memory?

    There is no exact formula, but you can use the following approaches:

    1. Use MaxMemoryGB as a reference

    Your MaxMemoryGB = 0.44 GB indicates that the heaviest table consumes approximately 440 MB during mashup. However, this only covers the mashup phase and does not include:
    • Model compression.
    • Internal processing by Analysis Services.

    2. Consider the model size plus overhead

    A practical rule for Power BI Premium:
    • Required memory ≈ (Model size × 2 to 3)
      This accounts for:
      • The loaded model.
      • Temporary structures during refresh.
    In your case:
    • Model size = 2.7 GB
    • Estimated requirement = around 8 GB (including overhead).
    This explains why it works on F32 (32 GB) and should also work on F16 (16 GB), provided there are no other models competing for resources.

     

    If this response was helpful in any way, I’d gladly accept a 👍much like the joy of seeing a DAX measure work first time without needing another FILTER.

    Please mark it as the correct solution. It helps other community members find their way faster (and saves them from another endless loop 🌀.