Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
kleman_emark
Partner - Contributor III
Partner - Contributor III

App Metadata Analyzer - feature request for Peak RAM usage per app

Hello all,

I would like to request a feature to be added to the Qlik Sense monitoring app - App Metadata Analyzer.

Apart from already displayed useful app data, the App Metadata Analyzer could also display Peak RAM of apps. Relevant field already present in app metadata: "peak_memory_bytes".

This is important for some Qlik Sense developers, because an application, that can have a low final Ram footprint, could in fact consume a significant amount of RAM in the peak of the app's reload. So this information could help every developer to improve their applications and support specialists to troubleshoot performance  issues.

Kind regards,

Tomas Kleman

EMARK

1 Solution

Accepted Solutions
Daniel_Pilla
Employee
Employee

Hi Tomas,

Peak Reload RAM was not introduced until February 2020 of Qlik Sense. The App Metadata Analyzer when it was designed (in 2018) was not built with that field. The App Metadata Analyzer is currently in maintenance mode as far as I'm aware, without any ongoing development. That said, it is very easy to add it in if you would like.

On the app_metadata tab in the load script, change:

RestConnectorMasterTable:
SQL SELECT 
    "static_byte_size",
    "__KEY_root",
    (SELECT 
        "cpu_time_spent_ms",
        "__KEY_reload_meta",
        "__FK_reload_meta",
        (SELECT 
            "logical_cores",
            "total_memory",
            "__FK_hardware"
        FROM "hardware" FK "__FK_hardware")
    FROM "reload_meta" PK "__KEY_reload_meta" FK "__FK_reload_meta"),

to:

RestConnectorMasterTable:
SQL SELECT 
    "static_byte_size",
    "__KEY_root",
    (SELECT 
        "cpu_time_spent_ms",
        "peak_memory_bytes",
        "__KEY_reload_meta",
        "__FK_reload_meta",
        (SELECT 
            "logical_cores",
            "total_memory",
            "__FK_hardware"
        FROM "hardware" FK "__FK_hardware")
    FROM "reload_meta" PK "__KEY_reload_meta" FK "__FK_reload_meta"),

Then in the subsequent load, change:

[AppReloadCPUMetadata]:
LOAD 
    [cpu_time_spent_ms] AS [App Reload CPU Time (ms)],
    '$(vAppGUID)' AS _IncrementalGUID,
    '$(vAppGUID)' AS AppID
RESIDENT RestConnectorMasterTable
WHERE NOT IsNull([__FK_reload_meta]);

to:

[AppReloadCPUMetadata]:
LOAD 
    [cpu_time_spent_ms] AS [App Reload CPU Time (ms)],
    peak_memory_bytes AS [Peak Memory Bytes],
    '$(vAppGUID)' AS _IncrementalGUID,
    '$(vAppGUID)' AS AppID
RESIDENT RestConnectorMasterTable
WHERE NOT IsNull([__FK_reload_meta]);

You will then want to flush your QVDs and reload the app to capture the new field. You can then use this field in the application.

It is also worth noting that this field is present in the App Analyzer for Qlik Sense Enterprise SaaS, just as an FYI. This field is especially critical in that platform.

Cheers,

View solution in original post

3 Replies
Tyler_Waterfall
Employee
Employee

@Daniel_Pilla  -- any thoughts on this?

Daniel_Pilla
Employee
Employee

Hi Tomas,

Peak Reload RAM was not introduced until February 2020 of Qlik Sense. The App Metadata Analyzer when it was designed (in 2018) was not built with that field. The App Metadata Analyzer is currently in maintenance mode as far as I'm aware, without any ongoing development. That said, it is very easy to add it in if you would like.

On the app_metadata tab in the load script, change:

RestConnectorMasterTable:
SQL SELECT 
    "static_byte_size",
    "__KEY_root",
    (SELECT 
        "cpu_time_spent_ms",
        "__KEY_reload_meta",
        "__FK_reload_meta",
        (SELECT 
            "logical_cores",
            "total_memory",
            "__FK_hardware"
        FROM "hardware" FK "__FK_hardware")
    FROM "reload_meta" PK "__KEY_reload_meta" FK "__FK_reload_meta"),

to:

RestConnectorMasterTable:
SQL SELECT 
    "static_byte_size",
    "__KEY_root",
    (SELECT 
        "cpu_time_spent_ms",
        "peak_memory_bytes",
        "__KEY_reload_meta",
        "__FK_reload_meta",
        (SELECT 
            "logical_cores",
            "total_memory",
            "__FK_hardware"
        FROM "hardware" FK "__FK_hardware")
    FROM "reload_meta" PK "__KEY_reload_meta" FK "__FK_reload_meta"),

Then in the subsequent load, change:

[AppReloadCPUMetadata]:
LOAD 
    [cpu_time_spent_ms] AS [App Reload CPU Time (ms)],
    '$(vAppGUID)' AS _IncrementalGUID,
    '$(vAppGUID)' AS AppID
RESIDENT RestConnectorMasterTable
WHERE NOT IsNull([__FK_reload_meta]);

to:

[AppReloadCPUMetadata]:
LOAD 
    [cpu_time_spent_ms] AS [App Reload CPU Time (ms)],
    peak_memory_bytes AS [Peak Memory Bytes],
    '$(vAppGUID)' AS _IncrementalGUID,
    '$(vAppGUID)' AS AppID
RESIDENT RestConnectorMasterTable
WHERE NOT IsNull([__FK_reload_meta]);

You will then want to flush your QVDs and reload the app to capture the new field. You can then use this field in the application.

It is also worth noting that this field is present in the App Analyzer for Qlik Sense Enterprise SaaS, just as an FYI. This field is especially critical in that platform.

Cheers,

kleman_emark
Partner - Contributor III
Partner - Contributor III
Author

Hi Daniel,

thank you for the explanation and hints. They are very useful.

Cheers,

Tomas