Sqlite empty data column in GENERIC_EVENTS

Hi,
I’m running into a problem while exporting the sqlite database using nsys stats. Using version NVIDIA Nsight Systems version 2024.5.1.113-245134619542v0, I’ve noticed that the data column in the GENERIC_EVENTS table is empty. I normally use this to extract the GPU metrics. The nsys-rep file was created with a slightly older version: NVIDIA Nsight Systems version 2024.4.1.61-244134315967v0.
Have the GPU metrics been moved to a different table in the sqlite database or are the versions incompatible for what I’m trying to do?

I believe that that is in fact the case, @jkreibich can confirm for sure. You can find more info about getting the schema info at User Guide — nsight-systems 2025.1 documentation (it looks like a generic link, the forum software is suboptimal, it is actually a direct link).

There were two changes to the exporter that, when mixed between different versions, might be causing issues. The good news is that the data is in the .nsys-rep file regardless, the changes were only in the exporter, and how the data is organized in SQLite.

First, the JSON data was removed from the GENERIC_EVENTS table, as it tended to create extremely large exports in some common use-cases. You can continue to export that data by using the --include-json=true flag with the export, but it only applies to events that are still being exported to the GENERIC_EVENTS table.

Additionally, at some point the GPU Metrics data was broken out into its own set of tables. The TARGET_INFO_GPU_METRICS table contains the structure of the data, and the GPU_METRICS table contains the actual event data. For a few versions the data was being exported into both the GPU_METRICS table and the GENERIC_EVENTS table, but the current version of Nsight Systems only exports GPU Metric events to the GPU_METRICS table (this also means the JSON may no longer be available).

Have a look at those tables and see if you can get what you need from them. If not, or the format/layout isn’t making sense, let us know and I’ll try to answer any more specific questions.

CREATE TABLE TARGET_INFO_GPU_METRICS (
    -- GPU Metrics, metric names and ids.

    typeId            INTEGER   NOT NULL,     -- REFERENCES GENERIC_EVENT_TYPES(typeId)
    sourceId          INTEGER   NOT NULL,     -- REFERENCES GENERIC_EVENT_SOURCES(sourceId)
    typeName          TEXT      NOT NULL,     -- Name of event type.
    metricId          INTEGER   NOT NULL,     -- Id of metric in event; not assumed to be stable.
    metricName        TEXT      NOT NULL      -- Definitive name of metric.
);

CREATE TABLE GPU_METRICS (
    -- GPU Metrics, events and values.

    rawTimestamp      INTEGER   NOT NULL,     -- Raw event timestamp recorded during profiling.
    timestamp         INTEGER   NOT NULL,     -- Event timestamp (ns).
    typeId            INTEGER   NOT NULL,     -- REFERENCES TARGET_INFO_GPU_METRICS(typeId) and GENERIC_EVENT_TYPES(typeId)
    metricId          INTEGER   NOT NULL,     -- REFERENCES TARGET_INFO_GPU_METRICS(metricId)
    value             INTEGER   NOT NULL      -- Counter data value
);

Perfect, that’s exactly what I was looking for, thank you!

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.