VirtualBox

Changeset 102644 in vbox for trunk/src/VBox/Frontends


Ignore:
Timestamp:
Dec 20, 2023 11:06:46 AM (15 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
160806
Message:

FE/Qt: bugref:10501. Extending UIMetric to include time stamps of the time series

Location:
trunk/src/VBox/Frontends/VirtualBox/src/activity/vmactivity
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/activity/vmactivity/UIVMActivityMonitor.cpp

    r102641 r102644  
    10271027}
    10281028
     1029void UIMetric::addData(int iDataSeriesIndex, quint64 iData, const QString &strLabel)
     1030{
     1031    if (iDataSeriesIndex >= DATA_SERIES_SIZE)
     1032        return;
     1033
     1034    addData(iDataSeriesIndex, iData);
     1035
     1036    m_labels[iDataSeriesIndex].enqueue(strLabel);
     1037    if (m_data[iDataSeriesIndex].size() > m_iMaximumQueueSize)
     1038        m_labels[iDataSeriesIndex].dequeue();
     1039}
     1040
    10291041const QQueue<quint64> *UIMetric::data(int iDataSeriesIndex) const
    10301042{
     
    14951507        ULONG aPctOther;
    14961508        m_comMachineDebugger.GetCPULoad(0x7fffffff, aPctExecuting, aPctHalted, aPctOther);
    1497         updateCPUGraphsAndMetric(aPctExecuting, aPctOther);
     1509        updateCPUChart(aPctExecuting, aPctOther);
    14981510    }
    14991511
     
    15031515        quint64 cbNetworkTotalTransmitted = 0;
    15041516        UIMonitorCommon::getNetworkLoad(m_comMachineDebugger, cbNetworkTotalReceived, cbNetworkTotalTransmitted);
    1505         updateNetworkGraphsAndMetric(cbNetworkTotalReceived, cbNetworkTotalTransmitted);
     1517        updateNetworkChart(cbNetworkTotalReceived, cbNetworkTotalTransmitted);
    15061518    }
    15071519
     
    15111523        quint64 cbDiskIOTotalRead = 0;
    15121524        UIMonitorCommon::getDiskLoad(m_comMachineDebugger, cbDiskIOTotalWritten, cbDiskIOTotalRead);
    1513         updateDiskIOGraphsAndMetric(cbDiskIOTotalWritten, cbDiskIOTotalRead);
     1525        updateDiskIOChart(cbDiskIOTotalWritten, cbDiskIOTotalRead);
    15141526    }
    15151527
     
    17211733}
    17221734
    1723 void UIVMActivityMonitorLocal::updateCPUGraphsAndMetric(ULONG iExecutingPercentage, ULONG iOtherPercentage)
     1735void UIVMActivityMonitorLocal::updateCPUChart(ULONG iExecutingPercentage, ULONG iOtherPercentage)
    17241736{
    17251737    UIMetric &CPUMetric = m_metrics[m_strCPUMetricName];
     
    17611773}
    17621774
    1763 void UIVMActivityMonitorLocal::updateNetworkGraphsAndMetric(quint64 uReceiveTotal, quint64 uTransmitTotal)
     1775void UIVMActivityMonitorLocal::updateNetworkChart(quint64 uReceiveTotal, quint64 uTransmitTotal)
    17641776{
    17651777    UIMetric &NetMetric = m_metrics[m_strNetworkMetricName];
     
    17951807}
    17961808
    1797 void UIVMActivityMonitorLocal::updateDiskIOGraphsAndMetric(quint64 uDiskIOTotalWritten, quint64 uDiskIOTotalRead)
     1809void UIVMActivityMonitorLocal::updateDiskIOChart(quint64 uDiskIOTotalWritten, quint64 uDiskIOTotalRead)
    17981810{
    17991811    UIMetric &diskMetric = m_metrics[m_strDiskIOMetricName];
     
    19421954        {
    19431955            float fValue = data[i].toFloat();
    1944             updateCPUGraphsAndMetric((ULONG) fValue, 0);
     1956            updateCPUChart((ULONG) fValue, timeStamps[i]);
    19451957        }
    19461958        else if (enmMetricType == KMetricType_NetworksBytesOut)
     
    20162028}
    20172029
    2018 void UIVMActivityMonitorCloud::updateCPUGraphsAndMetric(ULONG iLoadPercentage, ULONG /*iOtherPercentage*/)
     2030void UIVMActivityMonitorCloud::updateCPUChart(ULONG iLoadPercentage, const QString &strLabel)
    20192031{
    20202032    UIMetric &CPUMetric = m_metrics[m_strCPUMetricName];
    2021     CPUMetric.addData(0, iLoadPercentage);
     2033    CPUMetric.addData(0, iLoadPercentage, strLabel);
    20222034    CPUMetric.setMaximum(100);
    20232035    if (m_infoLabels.contains(m_strCPUMetricName)  && m_infoLabels[m_strCPUMetricName])
     
    20372049}
    20382050
    2039 void UIVMActivityMonitorCloud::updateRAMGraphsAndMetric(quint64 /*iTotalRAM*/, quint64 /*iFreeRAM*/){}
    2040 void UIVMActivityMonitorCloud::updateNetworkGraphsAndMetric(quint64 uReceiveRate, quint64 uTransmitRate)
     2051void UIVMActivityMonitorCloud::updateNetworkChart(quint64 uReceiveRate, quint64 uTransmitRate, const QString &strLabel)
    20412052{
    20422053    UIMetric &networkMetric = m_metrics[m_strNetworkMetricName];
    2043     networkMetric.addData(0, uReceiveRate);
    2044     networkMetric.addData(1, uTransmitRate);
     2054    networkMetric.addData(0, uReceiveRate, strLabel);
     2055    networkMetric.addData(1, uTransmitRate, strLabel);
    20452056
    20462057    if (m_infoLabels.contains(m_strNetworkMetricName)  && m_infoLabels[m_strNetworkMetricName])
     
    20562067}
    20572068
    2058 void UIVMActivityMonitorCloud::updateDiskIOGraphsAndMetric(quint64 uWriteRate, quint64 uReadRate)
     2069void UIVMActivityMonitorCloud::updateDiskIOChart(quint64 uWriteRate, quint64 uReadRate, const QString &strLabel)
    20592070{
    20602071    UIMetric &diskMetric = m_metrics[m_strDiskIOMetricName];
    20612072
    2062 
    2063     diskMetric.addData(0, uWriteRate);
    2064     diskMetric.addData(1, uReadRate);
    2065 
     2073    diskMetric.addData(0, uWriteRate, strLabel);
     2074    diskMetric.addData(1, uReadRate, strLabel);
    20662075
    20672076    if (m_infoLabels.contains(m_strDiskIOMetricName)  && m_infoLabels[m_strDiskIOMetricName])
     
    21782187    if (m_diskReadCache.contains(strTimeStamp))
    21792188    {
    2180         updateDiskIOGraphsAndMetric((quint64) iValue, (quint64) m_diskReadCache[strTimeStamp]);
     2189        updateDiskIOChart((quint64) iValue, (quint64) m_diskReadCache[strTimeStamp], strTimeStamp);
    21812190        m_diskReadCache[strTimeStamp];
    21822191    }
     
    21922201    if (m_diskWriteCache.contains(strTimeStamp))
    21932202    {
    2194         updateDiskIOGraphsAndMetric((quint64) m_diskWriteCache[strTimeStamp], (quint64) iValue);
     2203        updateDiskIOChart((quint64) m_diskWriteCache[strTimeStamp], (quint64) iValue, strTimeStamp);
    21952204        m_diskWriteCache.remove(strTimeStamp);
    21962205    }
     
    22052214    if (m_networkTransmitCache.contains(strTimeStamp))
    22062215    {
    2207         updateNetworkGraphsAndMetric((quint64) iValue, (quint64) m_networkTransmitCache[strTimeStamp]);
     2216        updateNetworkChart((quint64) iValue, (quint64) m_networkTransmitCache[strTimeStamp], strTimeStamp);
    22082217        m_networkTransmitCache.remove(strTimeStamp);
    22092218    }
     
    22192228    if (m_networkReceiveCache.contains(strTimeStamp))
    22202229    {
    2221         updateNetworkGraphsAndMetric((quint64)  m_networkReceiveCache[strTimeStamp], (quint64) iValue);
     2230        updateNetworkChart((quint64)  m_networkReceiveCache[strTimeStamp], (quint64) iValue, strTimeStamp);
    22222231        m_networkReceiveCache.remove(strTimeStamp);
    22232232    }
  • trunk/src/VBox/Frontends/VirtualBox/src/activity/vmactivity/UIVMActivityMonitor.h

    r102635 r102644  
    6464#define DATA_SERIES_SIZE 2
    6565
     66struct UIMetricData
     67{
     68    quint64 m_value;
     69    QString m_strLabel;
     70};
     71
    6672/** UIMetric represents a performance metric and is used to store data related to the corresponding metric. */
    6773class UIMetric
     
    8187
    8288    void addData(int iDataSeriesIndex, quint64 fData);
     89    void addData(int iDataSeriesIndex, quint64 fData, const QString &strLabel);
    8390    const QQueue<quint64> *data(int iDataSeriesIndex) const;
    8491
     
    111118    quint64 m_iMaximum;
    112119    QQueue<quint64> m_data[DATA_SERIES_SIZE];
     120    QQueue<QString> m_labels[DATA_SERIES_SIZE];
    113121    /** The total data (the counter value we get from IMachineDebugger API). For the metrics
    114122      * we get from IMachineDebugger m_data values are computed as deltas of total values t - (t-1) */
     
    152160    virtual void reset() = 0;
    153161    virtual void start() = 0;
    154 
    155     /** @name The following functions update corresponding metric charts and labels with new values
    156       * @{ */
    157         virtual void updateCPUGraphsAndMetric(ULONG iLoadPercentage, ULONG iOtherPercentage) = 0;
    158         virtual void updateRAMGraphsAndMetric(quint64 iTotalRAM, quint64 iFreeRAM) = 0;
    159         virtual void updateNetworkGraphsAndMetric(quint64 uReceiveTotal, quint64 uTransmitTotal) = 0;
    160         virtual void updateDiskIOGraphsAndMetric(quint64 uDiskIOTotalWritten, quint64 uDiskIOTotalRead) = 0;
    161     /** @} */
    162162
    163163    /** Returns a QColor for the chart with @p strChartName and data series with @p iDataIndex. */
     
    283283    bool guestAdditionsAvailable(const char *pszMinimumVersion);
    284284    void enableDisableGuestAdditionDependedWidgets(bool fEnable);
    285     void updateCPUGraphsAndMetric(ULONG iLoadPercentage, ULONG iOtherPercentage);
     285    void updateCPUChart(ULONG iLoadPercentage, ULONG iOtherPercentage);
    286286    void updateRAMGraphsAndMetric(quint64 iTotalRAM, quint64 iFreeRAM);
    287     void updateNetworkGraphsAndMetric(quint64 uReceiveTotal, quint64 uTransmitTotal);
    288     void updateDiskIOGraphsAndMetric(quint64 uDiskIOTotalWritten, quint64 uDiskIOTotalRead);
     287    void updateNetworkChart(quint64 uReceiveTotal, quint64 uTransmitTotal);
     288    void updateDiskIOChart(quint64 uDiskIOTotalWritten, quint64 uDiskIOTotalRead);
    289289    void updateVMExitMetric(quint64 uTotalVMExits);
    290290    void resetVMExitInfoLabel();
     
    332332    /** @name The following functions update corresponding metric charts and labels with new values
    333333      * @{ */
    334         virtual void updateCPUGraphsAndMetric(ULONG iLoadPercentage, ULONG iOtherPercentage) RT_OVERRIDE;
    335         virtual void updateRAMGraphsAndMetric(quint64 iTotalRAM, quint64 iFreeRAM) RT_OVERRIDE;
    336         virtual void updateNetworkGraphsAndMetric(quint64 uReceive, quint64 uTransmit) RT_OVERRIDE;
    337         virtual void updateDiskIOGraphsAndMetric(quint64 uWriteRate, quint64 uReadRate) RT_OVERRIDE;
     334        virtual void updateCPUChart(ULONG iLoadPercentage, const QString &strLabel);
     335        virtual void updateNetworkChart(quint64 uReceive, quint64 uTransmit, const QString &strLabel);
     336        virtual void updateDiskIOChart(quint64 uWriteRate, quint64 uReadRate, const QString &strLabel);
    338337    /** @} */
    339338    virtual void resetCPUInfoLabel();
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette