Changeset 102625 in vbox for trunk/src/VBox/Frontends
- Timestamp:
- Dec 16, 2023 8:21:41 AM (14 months ago)
- 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
r102611 r102625 1196 1196 1197 1197 UIChart *pChart = new UIChart(this, &(m_metrics[strMetricName]), m_iMaximumQueueSize); 1198 //pChart->installEventFilter(this);1199 1198 connect(pChart, &UIChart::sigExportMetricsToFile, 1200 1199 this, &UIVMActivityMonitor::sltExportMetricsToFile); … … 1251 1250 void UIVMActivityMonitor::sltChatDataIndexUnderCursorChanged(int iIndex) 1252 1251 { 1252 Q_UNUSED(iIndex); 1253 #if 0 1253 1254 foreach (UIChart *chart, m_charts) 1254 1255 { … … 1259 1260 1260 1261 } 1262 #endif 1261 1263 } 1262 1264 … … 1864 1866 m_availableMetricTypes.clear(); 1865 1867 foreach (const QString &strName, metricNameList) 1866 {1867 ///printf("%s\n", qPrintable(strName));1868 1868 m_availableMetricTypes << gpConverter->fromInternalString<KMetricType>(strName); 1869 }1870 1869 1871 1870 if (!m_availableMetricTypes.isEmpty()) … … 1892 1891 else if (enmMetricType == KMetricType_DiskBytesRead) 1893 1892 { 1894 //printf("diskread %s %s\n", qPrintable(data[i]), qPrintable(timeStamps[i]));1893 cacheDiskRead(timeStamps[i], data[i].toULongLong()); 1895 1894 } 1896 1895 else if (enmMetricType == KMetricType_DiskBytesWritten) 1897 1896 { 1898 //printf("diskwrite %s %s\n", qPrintable(data[i]), qPrintable(timeStamps[i])); 1897 //printf("write %s %f\n", qPrintable(data[i]), data[i].toFloat()); 1898 cacheDiskWrite(timeStamps[i], (int)data[i].toFloat()); 1899 1899 } 1900 1900 … … 1931 1931 foreach (const KMetricType &enmMetricType, m_availableMetricTypes) 1932 1932 { 1933 printf("enm %d\n", enmMetricType);1934 1933 UIMetric metric; 1935 1934 int iDataSeriesIndex = 0; … … 1989 1988 void UIVMActivityMonitorCloud::updateRAMGraphsAndMetric(quint64 /*iTotalRAM*/, quint64 /*iFreeRAM*/){} 1990 1989 void UIVMActivityMonitorCloud::updateNetworkGraphsAndMetric(quint64 /*iReceiveTotal*/, quint64 /*iTransmitTotal*/){} 1991 void UIVMActivityMonitorCloud::updateDiskIOGraphsAndMetric(quint64 /*uDiskIOTotalWritten*/, quint64 /*uDiskIOTotalRead*/){} 1990 1991 void UIVMActivityMonitorCloud::updateDiskIOGraphsAndMetric(quint64 uWriteRate, quint64 uReadRate) 1992 { 1993 //printf("%lld %lld\n", uWriteRate, uReadRate); 1994 UIMetric &diskMetric = m_metrics[m_strDiskIOMetricName]; 1995 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 // } 2007 diskMetric.addData(0, uWriteRate); 2008 diskMetric.addData(1, uReadRate); 2009 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 // } 2020 if (m_charts.contains(m_strDiskIOMetricName)) 2021 m_charts[m_strDiskIOMetricName]->update(); 2022 } 1992 2023 1993 2024 bool UIVMActivityMonitorCloud::findMetric(KMetricType enmMetricType, UIMetric &metric, int &iDataSeriesIndex) const … … 2083 2114 } 2084 2115 2116 void UIVMActivityMonitorCloud::cacheDiskWrite(const QString &strTimeStamp, int iValue) 2117 { 2118 /* Make sure this is the first time we receieve write for this time stap: */ 2119 AssertReturnVoid(!m_diskWriteCache.contains(strTimeStamp)); 2120 /* If we have read rate for this time stamp just update the chart and remove related data from the cache: */ 2121 if (m_diskReadCache.contains(strTimeStamp)) 2122 { 2123 updateDiskIOGraphsAndMetric((quint64) iValue, (quint64) m_diskReadCache[strTimeStamp]); 2124 m_diskReadCache[strTimeStamp]; 2125 } 2126 else 2127 m_diskWriteCache[strTimeStamp] = iValue; 2128 } 2129 2130 void UIVMActivityMonitorCloud::cacheDiskRead(const QString &strTimeStamp, int iValue) 2131 { 2132 /* Make sure this is the first time we receieve read for this time stap: */ 2133 AssertReturnVoid(!m_diskReadCache.contains(strTimeStamp)); 2134 /* If we have write rate for this time stamp just update the chart and remove related data from the cache: */ 2135 if (m_diskWriteCache.contains(strTimeStamp)) 2136 { 2137 updateDiskIOGraphsAndMetric((quint64) m_diskWriteCache[strTimeStamp], (quint64) iValue); 2138 m_diskWriteCache.remove(strTimeStamp); 2139 } 2140 else 2141 m_diskReadCache[strTimeStamp] = iValue; 2142 } 2143 2144 2085 2145 #include "UIVMActivityMonitor.moc" -
trunk/src/VBox/Frontends/VirtualBox/src/activity/vmactivity/UIVMActivityMonitor.h
r102611 r102625 335 335 virtual void updateRAMGraphsAndMetric(quint64 iTotalRAM, quint64 iFreeRAM) RT_OVERRIDE; 336 336 virtual void updateNetworkGraphsAndMetric(quint64 iReceiveTotal, quint64 iTransmitTotal) RT_OVERRIDE; 337 virtual void updateDiskIOGraphsAndMetric(quint64 u DiskIOTotalWritten, quint64 uDiskIOTotalRead) RT_OVERRIDE;337 virtual void updateDiskIOGraphsAndMetric(quint64 uWriteRate, quint64 uReadRate) RT_OVERRIDE; 338 338 /** @} */ 339 339 virtual void resetCPUInfoLabel(); 340 340 virtual void resetNetworkInfoLabel(); 341 341 virtual void resetDiskIOInfoLabel(); 342 343 /* Since we have a single UIMetric instance for disk IO we cache write and/or read until the other value arrives. Then update 344 * the corresponding chart. */ 345 void cacheDiskWrite(const QString &strTimeStamp, int iValue); 346 void cacheDiskRead(const QString &strTimeStamp, int iValue); 342 347 343 348 bool findMetric(KMetricType enmMetricType, UIMetric &metric, int &iDataSeriesIndex) const; … … 349 354 /** Mapping from API enums to internal metric names. Necessary also since we don't hace a 1-to-1 mapping. */ 350 355 QHash<KMetricType, QString> m_metricTypeNames; 356 357 /* Key is time stamp we get from our Main API, value is disk write or read values. */ 358 QMap<QString, quint64> m_diskWriteCache; 359 QMap<QString, quint64> m_diskReadCache; 351 360 }; 352 361 #endif /* !FEQT_INCLUDED_SRC_activity_vmactivity_UIVMActivityMonitor_h */
Note:
See TracChangeset
for help on using the changeset viewer.