VirtualBox

Changeset 102635 in vbox


Ignore:
Timestamp:
Dec 18, 2023 2:49:52 PM (16 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
160794
Message:

FE/Qt: ​bugref:10501. Now disk IO and network metrics are working.

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

    r102625 r102635  
    17021702}
    17031703
    1704 void UIVMActivityMonitorLocal::updateNetworkGraphsAndMetric(quint64 iReceiveTotal, quint64 iTransmitTotal)
     1704void UIVMActivityMonitorLocal::updateNetworkGraphsAndMetric(quint64 uReceiveTotal, quint64 uTransmitTotal)
    17051705{
    17061706    UIMetric &NetMetric = m_metrics[m_strNetworkMetricName];
    17071707
    1708     quint64 iReceiveRate = iReceiveTotal - NetMetric.total(0);
    1709     quint64 iTransmitRate = iTransmitTotal - NetMetric.total(1);
    1710 
    1711     NetMetric.setTotal(0, iReceiveTotal);
    1712     NetMetric.setTotal(1, iTransmitTotal);
     1708    quint64 uReceiveRate = uReceiveTotal - NetMetric.total(0);
     1709    quint64 uTransmitRate = uTransmitTotal - NetMetric.total(1);
     1710
     1711    NetMetric.setTotal(0, uReceiveTotal);
     1712    NetMetric.setTotal(1, uTransmitTotal);
    17131713
    17141714    if (!NetMetric.isInitialized())
     
    17181718    }
    17191719
    1720     NetMetric.addData(0, iReceiveRate);
    1721     NetMetric.addData(1, iTransmitRate);
     1720    NetMetric.addData(0, uReceiveRate);
     1721    NetMetric.addData(1, uTransmitRate);
    17221722
    17231723    if (m_infoLabels.contains(m_strNetworkMetricName)  && m_infoLabels[m_strNetworkMetricName])
     
    17261726        strInfo = QString("<b>%1</b></b><br/><font color=\"%2\">%3: %4<br/>%5 %6</font><br/><font color=\"%7\">%8: %9<br/>%10 %11</font>")
    17271727            .arg(m_strNetworkInfoLabelTitle)
    1728             .arg(dataColorString(m_strNetworkMetricName, 0)).arg(m_strNetworkInfoLabelReceived).arg(UITranslator::formatSize((quint64)iReceiveRate, g_iDecimalCount))
    1729             .arg(m_strNetworkInfoLabelReceivedTotal).arg(UITranslator::formatSize((quint64)iReceiveTotal, g_iDecimalCount))
    1730             .arg(dataColorString(m_strNetworkMetricName, 1)).arg(m_strNetworkInfoLabelTransmitted).arg(UITranslator::formatSize((quint64)iTransmitRate, g_iDecimalCount))
    1731             .arg(m_strNetworkInfoLabelTransmittedTotal).arg(UITranslator::formatSize((quint64)iTransmitTotal, g_iDecimalCount));
     1728            .arg(dataColorString(m_strNetworkMetricName, 0)).arg(m_strNetworkInfoLabelReceived).arg(UITranslator::formatSize(uReceiveRate, g_iDecimalCount))
     1729            .arg(m_strNetworkInfoLabelReceivedTotal).arg(UITranslator::formatSize(uReceiveTotal, g_iDecimalCount))
     1730            .arg(dataColorString(m_strNetworkMetricName, 1)).arg(m_strNetworkInfoLabelTransmitted).arg(UITranslator::formatSize(uTransmitRate, g_iDecimalCount))
     1731            .arg(m_strNetworkInfoLabelTransmittedTotal).arg(UITranslator::formatSize(uTransmitTotal, g_iDecimalCount));
    17321732        m_infoLabels[m_strNetworkMetricName]->setText(strInfo);
    17331733    }
     
    17401740    UIMetric &diskMetric = m_metrics[m_strDiskIOMetricName];
    17411741
    1742     quint64 iWriteRate = uDiskIOTotalWritten - diskMetric.total(0);
    1743     quint64 iReadRate = uDiskIOTotalRead - diskMetric.total(1);
     1742    quint64 uWriteRate = uDiskIOTotalWritten - diskMetric.total(0);
     1743    quint64 uReadRate = uDiskIOTotalRead - diskMetric.total(1);
    17441744
    17451745    diskMetric.setTotal(0, uDiskIOTotalWritten);
     
    17511751        return;
    17521752    }
    1753     diskMetric.addData(0, iWriteRate);
    1754     diskMetric.addData(1, iReadRate);
     1753    diskMetric.addData(0, uWriteRate);
     1754    diskMetric.addData(1, uReadRate);
    17551755
    17561756    if (m_infoLabels.contains(m_strDiskIOMetricName)  && m_infoLabels[m_strDiskIOMetricName])
     
    17581758        QString strInfo = QString("<b>%1</b></b><br/><font color=\"%2\">%3: %4<br/>%5 %6</font><br/><font color=\"%7\">%8: %9<br/>%10 %11</font>")
    17591759            .arg(m_strDiskIOInfoLabelTitle)
    1760             .arg(dataColorString(m_strDiskIOMetricName, 0)).arg(m_strDiskIOInfoLabelWritten).arg(UITranslator::formatSize((quint64)iWriteRate, g_iDecimalCount))
     1760            .arg(dataColorString(m_strDiskIOMetricName, 0)).arg(m_strDiskIOInfoLabelWritten).arg(UITranslator::formatSize(uWriteRate, g_iDecimalCount))
    17611761            .arg(m_strDiskIOInfoLabelWrittenTotal).arg(UITranslator::formatSize((quint64)uDiskIOTotalWritten, g_iDecimalCount))
    1762             .arg(dataColorString(m_strDiskIOMetricName, 1)).arg(m_strDiskIOInfoLabelRead).arg(UITranslator::formatSize((quint64)iReadRate, g_iDecimalCount))
     1762            .arg(dataColorString(m_strDiskIOMetricName, 1)).arg(m_strDiskIOInfoLabelRead).arg(UITranslator::formatSize(uReadRate, g_iDecimalCount))
    17631763            .arg(m_strDiskIOInfoLabelReadTotal).arg(UITranslator::formatSize((quint64)uDiskIOTotalRead, g_iDecimalCount));
    17641764        m_infoLabels[m_strDiskIOMetricName]->setText(strInfo);
     
    18851885            updateCPUGraphsAndMetric((ULONG) fValue, 0);
    18861886        }
     1887        else if (enmMetricType == KMetricType_NetworksBytesOut)
     1888            cacheNetworkTransmit(timeStamps[i], (int)data[i].toFloat());
    18871889        else if (enmMetricType == KMetricType_NetworksBytesIn)
    1888         {
    1889             //printf("%s %s\n", qPrintable(data[i]), qPrintable(timeStamps[i]));
    1890         }
     1890            cacheNetworkReceive(timeStamps[i], (int)data[i].toFloat());
    18911891        else if (enmMetricType == KMetricType_DiskBytesRead)
    1892         {
    1893             cacheDiskRead(timeStamps[i], data[i].toULongLong());
    1894         }
     1892            cacheDiskRead(timeStamps[i], (int)data[i].toFloat());
    18951893        else if (enmMetricType == KMetricType_DiskBytesWritten)
    1896         {
    1897             //printf("write %s %f\n", qPrintable(data[i]), data[i].toFloat());
    18981894            cacheDiskWrite(timeStamps[i], (int)data[i].toFloat());
    1899         }
    1900 
    1901     // KMetricType_DiskBytesWritten = 4,
    1902 
    19031895    }
    19041896    sender()->deleteLater();
     
    19871979
    19881980void UIVMActivityMonitorCloud::updateRAMGraphsAndMetric(quint64 /*iTotalRAM*/, quint64 /*iFreeRAM*/){}
    1989 void UIVMActivityMonitorCloud::updateNetworkGraphsAndMetric(quint64 /*iReceiveTotal*/, quint64 /*iTransmitTotal*/){}
     1981void UIVMActivityMonitorCloud::updateNetworkGraphsAndMetric(quint64 uReceiveRate, quint64 uTransmitRate)
     1982{
     1983    UIMetric &networkMetric = m_metrics[m_strNetworkMetricName];
     1984    networkMetric.addData(0, uReceiveRate);
     1985    networkMetric.addData(1, uTransmitRate);
     1986
     1987    if (m_infoLabels.contains(m_strNetworkMetricName)  && m_infoLabels[m_strNetworkMetricName])
     1988    {
     1989        QString strInfo;
     1990        strInfo = QString("<b>%1</b></b><br/><font color=\"%2\">%3: %4</font><br/><font color=\"%5\">%6: %7<br/></font>")
     1991            .arg(m_strNetworkInfoLabelTitle)
     1992            .arg(dataColorString(m_strNetworkMetricName, 0)).arg(m_strNetworkInfoLabelReceived).arg(UITranslator::formatSize(uReceiveRate, g_iDecimalCount))
     1993            .arg(dataColorString(m_strNetworkMetricName, 1)).arg(m_strNetworkInfoLabelTransmitted).arg(UITranslator::formatSize(uTransmitRate, g_iDecimalCount));
     1994
     1995        m_infoLabels[m_strNetworkMetricName]->setText(strInfo);
     1996    }
     1997}
    19901998
    19911999void UIVMActivityMonitorCloud::updateDiskIOGraphsAndMetric(quint64 uWriteRate, quint64 uReadRate)
    19922000{
    1993     //printf("%lld %lld\n", uWriteRate, uReadRate);
    19942001    UIMetric &diskMetric = m_metrics[m_strDiskIOMetricName];
    19952002
    1996     // quint64 iWriteRate = uDiskIOTotalWritten - diskMetric.total(0);
    1997     // quint64 iReadRate = uDiskIOTotalRead - diskMetric.total(1);
    1998 
    1999     // diskMetric.setTotal(0, uDiskIOTotalWritten);
    2000     // diskMetric.setTotal(1, uDiskIOTotalRead);
    2001 
    2002     // /* Do not set data and maximum if the metric has not been initialized  since we need to initialize totals "(t-1)" first: */
    2003     // if (!diskMetric.isInitialized()){
    2004     //     diskMetric.setIsInitialized(true);
    2005     //     return;
    2006     // }
     2003
    20072004    diskMetric.addData(0, uWriteRate);
    20082005    diskMetric.addData(1, uReadRate);
    20092006
    2010     // if (m_infoLabels.contains(m_strDiskIOMetricName)  && m_infoLabels[m_strDiskIOMetricName])
    2011     // {
    2012     //     QString strInfo = QString("<b>%1</b></b><br/><font color=\"%2\">%3: %4<br/>%5 %6</font><br/><font color=\"%7\">%8: %9<br/>%10 %11</font>")
    2013     //         .arg(m_strDiskIOInfoLabelTitle)
    2014     //         .arg(dataColorString(m_strDiskIOMetricName, 0)).arg(m_strDiskIOInfoLabelWritten).arg(UITranslator::formatSize((quint64)iWriteRate, g_iDecimalCount))
    2015     //         .arg(m_strDiskIOInfoLabelWrittenTotal).arg(UITranslator::formatSize((quint64)uDiskIOTotalWritten, g_iDecimalCount))
    2016     //         .arg(dataColorString(m_strDiskIOMetricName, 1)).arg(m_strDiskIOInfoLabelRead).arg(UITranslator::formatSize((quint64)iReadRate, g_iDecimalCount))
    2017     //         .arg(m_strDiskIOInfoLabelReadTotal).arg(UITranslator::formatSize((quint64)uDiskIOTotalRead, g_iDecimalCount));
    2018     //     m_infoLabels[m_strDiskIOMetricName]->setText(strInfo);
    2019     // }
     2007
     2008    if (m_infoLabels.contains(m_strDiskIOMetricName)  && m_infoLabels[m_strDiskIOMetricName])
     2009    {
     2010        QString strInfo = QString("<b>%1</b></b><br/> <font color=\"%2\">%3: %4</font><br/> <font color=\"%5\">%6: %7</font>")
     2011            .arg(m_strDiskIOInfoLabelTitle)
     2012            .arg(dataColorString(m_strDiskIOMetricName, 0)).arg(m_strDiskIOInfoLabelWritten).arg(UITranslator::formatSize(uWriteRate, g_iDecimalCount))
     2013            .arg(dataColorString(m_strDiskIOMetricName, 1)).arg(m_strDiskIOInfoLabelRead).arg(UITranslator::formatSize(uReadRate, g_iDecimalCount));
     2014
     2015        m_infoLabels[m_strDiskIOMetricName]->setText(strInfo);
     2016    }
     2017
    20202018    if (m_charts.contains(m_strDiskIOMetricName))
    20212019        m_charts[m_strDiskIOMetricName]->update();
     
    21422140}
    21432141
     2142void UIVMActivityMonitorCloud::cacheNetworkReceive(const QString &strTimeStamp, int iValue)
     2143{
     2144    AssertReturnVoid(!m_networkReceiveCache.contains(strTimeStamp));
     2145
     2146    if (m_networkTransmitCache.contains(strTimeStamp))
     2147    {
     2148        updateNetworkGraphsAndMetric((quint64) iValue, (quint64) m_networkTransmitCache[strTimeStamp]);
     2149        m_networkTransmitCache.remove(strTimeStamp);
     2150    }
     2151    else
     2152        m_networkReceiveCache[strTimeStamp] = iValue;
     2153}
     2154
     2155
     2156void UIVMActivityMonitorCloud::cacheNetworkTransmit(const QString &strTimeStamp, int iValue)
     2157{
     2158    AssertReturnVoid(!m_networkTransmitCache.contains(strTimeStamp));
     2159
     2160    if (m_networkReceiveCache.contains(strTimeStamp))
     2161    {
     2162        updateNetworkGraphsAndMetric((quint64)  m_networkReceiveCache[strTimeStamp], (quint64) iValue);
     2163        m_networkReceiveCache.remove(strTimeStamp);
     2164    }
     2165    else
     2166        m_networkTransmitCache[strTimeStamp] = iValue;
     2167}
     2168
     2169
    21442170
    21452171#include "UIVMActivityMonitor.moc"
  • trunk/src/VBox/Frontends/VirtualBox/src/activity/vmactivity/UIVMActivityMonitor.h

    r102625 r102635  
    157157        virtual void updateCPUGraphsAndMetric(ULONG iLoadPercentage, ULONG iOtherPercentage) = 0;
    158158        virtual void updateRAMGraphsAndMetric(quint64 iTotalRAM, quint64 iFreeRAM) = 0;
    159         virtual void updateNetworkGraphsAndMetric(quint64 iReceiveTotal, quint64 iTransmitTotal) = 0;
     159        virtual void updateNetworkGraphsAndMetric(quint64 uReceiveTotal, quint64 uTransmitTotal) = 0;
    160160        virtual void updateDiskIOGraphsAndMetric(quint64 uDiskIOTotalWritten, quint64 uDiskIOTotalRead) = 0;
    161161    /** @} */
     
    285285    void updateCPUGraphsAndMetric(ULONG iLoadPercentage, ULONG iOtherPercentage);
    286286    void updateRAMGraphsAndMetric(quint64 iTotalRAM, quint64 iFreeRAM);
    287     void updateNetworkGraphsAndMetric(quint64 iReceiveTotal, quint64 iTransmitTotal);
     287    void updateNetworkGraphsAndMetric(quint64 uReceiveTotal, quint64 uTransmitTotal);
    288288    void updateDiskIOGraphsAndMetric(quint64 uDiskIOTotalWritten, quint64 uDiskIOTotalRead);
    289289    void updateVMExitMetric(quint64 uTotalVMExits);
     
    334334        virtual void updateCPUGraphsAndMetric(ULONG iLoadPercentage, ULONG iOtherPercentage) RT_OVERRIDE;
    335335        virtual void updateRAMGraphsAndMetric(quint64 iTotalRAM, quint64 iFreeRAM) RT_OVERRIDE;
    336         virtual void updateNetworkGraphsAndMetric(quint64 iReceiveTotal, quint64 iTransmitTotal) RT_OVERRIDE;
     336        virtual void updateNetworkGraphsAndMetric(quint64 uReceive, quint64 uTransmit) RT_OVERRIDE;
    337337        virtual void updateDiskIOGraphsAndMetric(quint64 uWriteRate, quint64 uReadRate) RT_OVERRIDE;
    338338    /** @} */
     
    346346    void cacheDiskRead(const QString &strTimeStamp, int iValue);
    347347
     348    void cacheNetworkReceive(const QString &strTimeStamp, int iValue);
     349    void cacheNetworkTransmit(const QString &strTimeStamp, int iValue);
     350
     351
    348352    bool findMetric(KMetricType enmMetricType, UIMetric &metric, int &iDataSeriesIndex) const;
    349353    void prepareMetrics();
     
    358362    QMap<QString, quint64> m_diskWriteCache;
    359363    QMap<QString, quint64> m_diskReadCache;
     364
     365    QMap<QString, quint64> m_networkReceiveCache;
     366    QMap<QString, quint64> m_networkTransmitCache;
     367
    360368};
    361369#endif /* !FEQT_INCLUDED_SRC_activity_vmactivity_UIVMActivityMonitor_h */
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