user22615348
user22615348

Reputation: 13

Real-Time Data Plotting Performance Issues on Jetson Orin NX: CPU Utilization Concern

I’m running a real-time data plotting application on a Jetson Orin NX 16GB with Qt 6.8.0, where I update a chart with 10,000 data points every 30ms. This results in high CPU usage, ranging from 60-65%. When I remove the chart component from the application, the CPU usage drops to 2-3%, indicating that the chart rendering is likely causing the performance bottleneck.

Interestingly, the same application runs much more efficiently on a Samsung A8 tablet. This raises the concern that rendering such a large volume of data points in real time might be overwhelming the Jetson’s CPU, or potentially that the GPU on the Jetson Orin NX is not being fully utilized, or may lack the required capacity for this workload.

It seems possible that the main thread could be overwhelmed with chart rendering tasks, and GPU offloading may not be working effectively. Could there be a misconfiguration in utilizing the GPU for rendering, or is the Jetson Orin NX’s GPU simply not powerful enough to handle this load compared to the Samsung A8?

I am using minimal image on the board so make sure the resources are not over-utilised. Below is the code which I am using to plot real-time data-

I am using minimal image on the board so make sure the resources are not over-utilised. Below is the code which I am using to plot real-time data-

ChartView {
        id: chartView

        Layout.fillWidth: true
        Layout.fillHeight: true
        anchors.fill: parent
        legend.visible: false
        antialiasing: false
        theme: ChartView.ChartThemeLight

        property real xMarg: 0.2*chartView.width
        property real yMarg: 0.065*chartView.height

        ValuesAxis {
            id: axisX
            titleText: " IF Frequency (MHz)"
            labelFormat: "%.2f"
            min: 0
            max: 100
        }

        ValuesAxis {
            id: axisY
            titleText: "Magnitude (dB)"
            labelFormat: "%.1f"
            min: -50
            max: 0
            tickCount: 6
        }

        LineSeries {
            id: series1
            name: "Analysis"
            useOpenGL: true
            axisX: axisX
            axisY: axisY
        }
        
        axes: [axisX, axisY]
    }

    Connections {
        target: zmqSubscriber

        function onDataReceived(frequencyList, magnitudeList, maxMagnitude, maxMagnitudeFreq) 

        {
            series1.clear();

            // Append data to the series
            for (var i = 0; i < frequencyList.length; i+= 5)
            {
                series1.append(frequencyList[i], magnitudeList[i]);
            }
        }
    }

Upvotes: 0

Views: 56

Answers (0)

Related Questions