Changeset 102266 in vbox
- Timestamp:
- Nov 22, 2023 5:22:07 PM (16 months ago)
- svn:sync-xref-src-repo-rev:
- 160400
- 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
r102264 r102266 62 62 const ULONG g_iPeriod = 1; 63 63 /** The number of data points we store in UIChart. with g_iPeriod=1 it corresponds to 2 min. of data. */ 64 const int g_iMaximumQueueSize = 120;64 //const int m_iMaximumQueueSize = 120; 65 65 /** This is passed to IPerformanceCollector during its setup. When 1 that means IPerformanceCollector object does a data cache of size 1. */ 66 66 const int g_iMetricSetupCount = 1; … … 143 143 public: 144 144 145 UIChart(QWidget *pParent, UIMetric *pMetric );145 UIChart(QWidget *pParent, UIMetric *pMetric, int iMaximumQueueSize); 146 146 void setFontSize(int iFontSize); 147 147 int fontSize() const; … … 239 239 /** The width of the right margin in characters. */ 240 240 int m_iRightMarginCharWidth; 241 int m_iMaximumQueueSize; 241 242 }; 242 243 … … 304 305 *********************************************************************************************************************************/ 305 306 306 UIChart::UIChart(QWidget *pParent, UIMetric *pMetric )307 UIChart::UIChart(QWidget *pParent, UIMetric *pMetric, int iMaximumQueueSize) 307 308 :QIWithRetranslateUI<QWidget>(pParent) 308 309 , m_pMetric(pMetric) … … 319 320 , m_fDrawCurenValueIndicators(false) 320 321 , m_iRightMarginCharWidth(10) 322 , m_iMaximumQueueSize(iMaximumQueueSize) 321 323 { 322 324 m_axisFont = font(); … … 476 478 { 477 479 int iWidth = width() - m_iMarginLeft - m_iMarginRight; 478 if ( g_iMaximumQueueSize > 0)479 m_fPixelPerDataPoint = iWidth / (float) g_iMaximumQueueSize;480 if (m_iMaximumQueueSize > 0) 481 m_fPixelPerDataPoint = iWidth / (float)m_iMaximumQueueSize; 480 482 QIWithRetranslateUI<QWidget>::resizeEvent(pEvent); 481 483 } … … 494 496 { 495 497 Q_UNUSED(pEvent); 496 if (!m_pMetric || g_iMaximumQueueSize <= 1)498 if (!m_pMetric || m_iMaximumQueueSize <= 1) 497 499 return; 498 500 … … 564 566 { 565 567 /* Draw the data lines: */ 566 float fBarWidth = m_lineChartRect.width() / (float) ( g_iMaximumQueueSize - 1);568 float fBarWidth = m_lineChartRect.width() / (float) (m_iMaximumQueueSize - 1); 567 569 float fH = m_lineChartRect.height() / (float)iMaximum; 568 570 for (int k = 0; k < DATA_SERIES_SIZE; ++k) … … 680 682 int iFontHeight = fontMetrics.height(); 681 683 682 int iTotalSeconds = g_iPeriod * g_iMaximumQueueSize;684 int iTotalSeconds = g_iPeriod * m_iMaximumQueueSize; 683 685 for (int i = 0; i < iXSubAxisCount + 2; ++i) 684 686 { … … 853 855 , m_strUnit(strUnit) 854 856 , m_iMaximum(0) 855 #if 0 /* Unused according to Clang 11. */856 , m_iMaximumQueueSize(iMaximumQueueSize) /** @todo r=bird: m_iMaximumQueueSize is not used anywhere that I can see. */857 #endif858 857 , m_fRequiresGuestAdditions(false) 859 858 , m_fIsInitialized(false) 860 859 , m_fAutoUpdateMaximum(false) 860 , m_iMaximumQueueSize(iMaximumQueueSize) 861 861 { 862 862 RT_NOREF(iMaximumQueueSize); /* Unused according to Clang 11. */ … … 908 908 m_iMaximum = qMax(m_iMaximum, iData); 909 909 910 if (m_data[iDataSeriesIndex].size() > g_iMaximumQueueSize)910 if (m_data[iDataSeriesIndex].size() > m_iMaximumQueueSize) 911 911 { 912 912 bool fSearchMax = false; … … 1029 1029 *********************************************************************************************************************************/ 1030 1030 1031 UIVMActivityMonitor::UIVMActivityMonitor(EmbedTo enmEmbedding, QWidget *pParent )1031 UIVMActivityMonitor::UIVMActivityMonitor(EmbedTo enmEmbedding, QWidget *pParent, int iMaximumQueueSize) 1032 1032 : QIWithRetranslateUI<QWidget>(pParent) 1033 1033 , m_pTimer(0) … … 1039 1039 , m_strDiskIOMetricName("DiskIO") 1040 1040 , m_strVMExitMetricName("VMExits") 1041 , m_iMaximumQueueSize(iMaximumQueueSize) 1041 1042 , m_pMainLayout(0) 1042 1043 , m_enmEmbedding(enmEmbedding) … … 1050 1051 void UIVMActivityMonitor::retranslateUi() 1051 1052 { 1052 foreach (UIChart *pChart, m_charts)1053 pChart->setXAxisLabel(QApplication::translate("UIVMInformationDialog", "Sec."));1054 1055 1053 /* Translate the chart info labels: */ 1056 iMaximum= 0;1054 m_iMaximumLabelLength = 0; 1057 1055 m_strCPUInfoLabelTitle = QApplication::translate("UIVMInformationDialog", "CPU Load"); 1058 iMaximum = qMax(iMaximum, m_strCPUInfoLabelTitle.length());1056 m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strCPUInfoLabelTitle.length()); 1059 1057 m_strCPUInfoLabelGuest = QApplication::translate("UIVMInformationDialog", "Guest Load"); 1060 iMaximum = qMax(iMaximum, m_strCPUInfoLabelGuest.length());1058 m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strCPUInfoLabelGuest.length()); 1061 1059 m_strCPUInfoLabelVMM = QApplication::translate("UIVMInformationDialog", "VMM Load"); 1062 iMaximum = qMax(iMaximum, m_strCPUInfoLabelVMM.length());1060 m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strCPUInfoLabelVMM.length()); 1063 1061 m_strRAMInfoLabelTitle = QApplication::translate("UIVMInformationDialog", "RAM Usage"); 1064 iMaximum = qMax(iMaximum, m_strRAMInfoLabelTitle.length());1062 m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strRAMInfoLabelTitle.length()); 1065 1063 m_strRAMInfoLabelTotal = QApplication::translate("UIVMInformationDialog", "Total"); 1066 iMaximum = qMax(iMaximum, m_strRAMInfoLabelTotal.length());1064 m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strRAMInfoLabelTotal.length()); 1067 1065 m_strRAMInfoLabelFree = QApplication::translate("UIVMInformationDialog", "Free"); 1068 iMaximum = qMax(iMaximum, m_strRAMInfoLabelFree.length());1066 m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strRAMInfoLabelFree.length()); 1069 1067 m_strRAMInfoLabelUsed = QApplication::translate("UIVMInformationDialog", "Used"); 1070 iMaximum = qMax(iMaximum, m_strRAMInfoLabelUsed.length());1068 m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strRAMInfoLabelUsed.length()); 1071 1069 m_strNetworkInfoLabelTitle = QApplication::translate("UIVMInformationDialog", "Network Rate"); 1072 iMaximum = qMax(iMaximum, m_strNetworkInfoLabelTitle.length());1070 m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strNetworkInfoLabelTitle.length()); 1073 1071 m_strNetworkInfoLabelReceived = QApplication::translate("UIVMInformationDialog", "Receive Rate"); 1074 iMaximum = qMax(iMaximum, m_strNetworkInfoLabelReceived.length());1072 m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strNetworkInfoLabelReceived.length()); 1075 1073 m_strNetworkInfoLabelTransmitted = QApplication::translate("UIVMInformationDialog", "Transmit Rate"); 1076 iMaximum = qMax(iMaximum, m_strNetworkInfoLabelTransmitted.length());1074 m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strNetworkInfoLabelTransmitted.length()); 1077 1075 m_strNetworkInfoLabelReceivedTotal = QApplication::translate("UIVMInformationDialog", "Total Received"); 1078 iMaximum = qMax(iMaximum, m_strNetworkInfoLabelReceivedTotal.length());1076 m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strNetworkInfoLabelReceivedTotal.length()); 1079 1077 m_strNetworkInfoLabelTransmittedTotal = QApplication::translate("UIVMInformationDialog", "Total Transmitted"); 1080 iMaximum = qMax(iMaximum, m_strNetworkInfoLabelReceivedTotal.length());1078 m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strNetworkInfoLabelReceivedTotal.length()); 1081 1079 m_strDiskIOInfoLabelTitle = QApplication::translate("UIVMInformationDialog", "Disk IO Rate"); 1082 iMaximum = qMax(iMaximum, m_strDiskIOInfoLabelTitle.length());1080 m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strDiskIOInfoLabelTitle.length()); 1083 1081 m_strDiskIOInfoLabelWritten = QApplication::translate("UIVMInformationDialog", "Write Rate"); 1084 iMaximum = qMax(iMaximum, m_strDiskIOInfoLabelWritten.length());1082 m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strDiskIOInfoLabelWritten.length()); 1085 1083 m_strDiskIOInfoLabelRead = QApplication::translate("UIVMInformationDialog", "Read Rate"); 1086 iMaximum = qMax(iMaximum, m_strDiskIOInfoLabelRead.length());1084 m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strDiskIOInfoLabelRead.length()); 1087 1085 m_strDiskIOInfoLabelWrittenTotal = QApplication::translate("UIVMInformationDialog", "Total Written"); 1088 iMaximum = qMax(iMaximum, m_strDiskIOInfoLabelWrittenTotal.length());1086 m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strDiskIOInfoLabelWrittenTotal.length()); 1089 1087 m_strDiskIOInfoLabelReadTotal = QApplication::translate("UIVMInformationDialog", "Total Read"); 1090 iMaximum = qMax(iMaximum, m_strDiskIOInfoLabelReadTotal.length());1088 m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strDiskIOInfoLabelReadTotal.length()); 1091 1089 } 1092 1090 … … 1148 1146 m_infoLabels.insert(strMetricName, pLabel); 1149 1147 1150 UIChart *pChart = new UIChart(this, &(m_metrics[strMetricName]) );1148 UIChart *pChart = new UIChart(this, &(m_metrics[strMetricName]), m_iMaximumQueueSize); 1151 1149 pChart->installEventFilter(this); 1152 1150 connect(pChart, &UIChart::sigExportMetricsToFile, … … 1285 1283 1286 1284 UIVMActivityMonitorLocal::UIVMActivityMonitorLocal(EmbedTo enmEmbedding, QWidget *pParent, const CMachine &machine) 1287 :UIVMActivityMonitor(enmEmbedding, pParent )1285 :UIVMActivityMonitor(enmEmbedding, pParent, 120 /* iMaximumQueueSize */) 1288 1286 , m_fGuestAdditionsAvailable(false) 1289 1287 { … … 1312 1310 { 1313 1311 UIVMActivityMonitor::retranslateUi(); 1312 1313 foreach (UIChart *pChart, m_charts) 1314 pChart->setXAxisLabel(QApplication::translate("UIVMInformationDialog", "Sec.")); 1315 1314 1316 m_strVMExitInfoLabelTitle = QApplication::translate("UIVMInformationDialog", "VM Exits"); 1315 iMaximum = qMax(iMaximum, m_strVMExitInfoLabelTitle.length());1317 m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strVMExitInfoLabelTitle.length()); 1316 1318 m_strVMExitLabelCurrent = QApplication::translate("UIVMInformationDialog", "Current"); 1317 iMaximum = qMax(iMaximum, m_strVMExitLabelCurrent.length());1319 m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strVMExitLabelCurrent.length()); 1318 1320 m_strVMExitLabelTotal = QApplication::translate("UIVMInformationDialog", "Total"); 1319 iMaximum = qMax(iMaximum, m_strVMExitLabelTotal.length());1321 m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strVMExitLabelTotal.length()); 1320 1322 1321 1323 /* Compute the maximum label string length and set it as a fixed width to labels to prevent always changing widths: */ 1322 1324 /* Add m_iDecimalCount plus 4 characters for the number and 3 for unit string: */ 1323 iMaximum+= (g_iDecimalCount + 7);1325 m_iMaximumLabelLength += (g_iDecimalCount + 7); 1324 1326 if (!m_infoLabels.isEmpty()) 1325 1327 { … … 1329 1331 QFontMetrics labelFontMetric(pLabel->font()); 1330 1332 #if QT_VERSION >= QT_VERSION_CHECK(5, 11, 0) 1331 int iWidth = iMaximum* labelFontMetric.horizontalAdvance('X');1333 int iWidth = m_iMaximumLabelLength * labelFontMetric.horizontalAdvance('X'); 1332 1334 #else 1333 int iWidth = iMaximum* labelFontMetric.width('X');1335 int iWidth = m_iMaximumLabelLength * labelFontMetric.width('X'); 1334 1336 #endif 1335 1337 foreach (QLabel *pInfoLabel, m_infoLabels) … … 1518 1520 if (strName.contains("RAM", Qt::CaseInsensitive) && strName.contains("Free", Qt::CaseInsensitive)) 1519 1521 { 1520 UIMetric ramMetric(m_strRAMMetricName, metrics[i].GetUnit(), g_iMaximumQueueSize);1522 UIMetric ramMetric(m_strRAMMetricName, metrics[i].GetUnit(), m_iMaximumQueueSize); 1521 1523 ramMetric.setDataSeriesName(0, "Free"); 1522 1524 ramMetric.setDataSeriesName(1, "Used"); … … 1529 1531 1530 1532 /* CPU Metric: */ 1531 UIMetric cpuMetric(m_strCPUMetricName, "%", g_iMaximumQueueSize);1533 UIMetric cpuMetric(m_strCPUMetricName, "%", m_iMaximumQueueSize); 1532 1534 cpuMetric.setDataSeriesName(0, "Guest Load"); 1533 1535 cpuMetric.setDataSeriesName(1, "VMM Load"); … … 1535 1537 1536 1538 /* Network metric: */ 1537 UIMetric networkMetric(m_strNetworkMetricName, "B", g_iMaximumQueueSize);1539 UIMetric networkMetric(m_strNetworkMetricName, "B", m_iMaximumQueueSize); 1538 1540 networkMetric.setDataSeriesName(0, "Receive Rate"); 1539 1541 networkMetric.setDataSeriesName(1, "Transmit Rate"); … … 1542 1544 1543 1545 /* Disk IO metric */ 1544 UIMetric diskIOMetric(m_strDiskIOMetricName, "B", g_iMaximumQueueSize);1546 UIMetric diskIOMetric(m_strDiskIOMetricName, "B", m_iMaximumQueueSize); 1545 1547 diskIOMetric.setDataSeriesName(0, "Write Rate"); 1546 1548 diskIOMetric.setDataSeriesName(1, "Read Rate"); … … 1549 1551 1550 1552 /* VM exits metric */ 1551 UIMetric VMExitsMetric(m_strVMExitMetricName, "times", g_iMaximumQueueSize);1553 UIMetric VMExitsMetric(m_strVMExitMetricName, "times", m_iMaximumQueueSize); 1552 1554 VMExitsMetric.setAutoUpdateMaximum(true); 1553 1555 m_metrics.insert(m_strVMExitMetricName, VMExitsMetric); … … 1747 1749 1748 1750 UIVMActivityMonitorCloud::UIVMActivityMonitorCloud(EmbedTo enmEmbedding, QWidget *pParent, const CCloudMachine &machine) 1749 :UIVMActivityMonitor(enmEmbedding, pParent )1751 :UIVMActivityMonitor(enmEmbedding, pParent, 60 /* iMaximumQueueSize */) 1750 1752 { 1751 1753 m_metricTypeNames[KMetricType_CpuUtilization] = m_strCPUMetricName; … … 1760 1762 retranslateUi(); 1761 1763 prepareActions(); 1762 //connect(&uiCommon(), &UICommon::sigAskToDetachCOM, this, &UIVMActivityMonitorLocal::sltClearCOMData);1763 1764 setMachine(machine); 1764 1765 } … … 1801 1802 { 1802 1803 float fValue = data[i].toFloat(); 1803 updateCPUGraphsAndMetric((ULONG) fValue, 0);1804 updateCPUGraphsAndMetric((ULONG) fValue, 0); 1804 1805 } 1805 1806 } 1806 1807 1807 sender()->deleteLater(); 1808 1808 } … … 1825 1825 { 1826 1826 UIVMActivityMonitor::retranslateUi(); 1827 foreach (UIChart *pChart, m_charts) 1828 pChart->setXAxisLabel(QApplication::translate("UIVMInformationDialog", "Min.")); 1827 1829 } 1828 1830 … … 1908 1910 void UIVMActivityMonitorCloud::prepareMetrics() 1909 1911 { 1910 // UIMetric ramMetric(m_strRAMMetricName, metrics[i].GetUnit(), g_iMaximumQueueSize);1912 // UIMetric ramMetric(m_strRAMMetricName, metrics[i].GetUnit(), m_iMaximumQueueSize); 1911 1913 // ramMetric.setDataSeriesName(0, "Free"); 1912 1914 // ramMetric.setDataSeriesName(1, "Used"); … … 1915 1917 1916 1918 /* CPU Metric: */ 1917 UIMetric cpuMetric(m_strCPUMetricName, "%", g_iMaximumQueueSize);1919 UIMetric cpuMetric(m_strCPUMetricName, "%", m_iMaximumQueueSize); 1918 1920 cpuMetric.setDataSeriesName(0, "CPU Utilization"); 1919 1921 m_metrics.insert(m_strCPUMetricName, cpuMetric); 1920 1922 1921 1923 // /* Network metric: */ 1922 // UIMetric networkMetric(m_strNetworkMetricName, "B", g_iMaximumQueueSize);1924 // UIMetric networkMetric(m_strNetworkMetricName, "B", m_iMaximumQueueSize); 1923 1925 // networkMetric.setDataSeriesName(0, "Receive Rate"); 1924 1926 // networkMetric.setDataSeriesName(1, "Transmit Rate"); … … 1927 1929 1928 1930 // /* Disk IO metric */ 1929 // UIMetric diskIOMetric(m_strDiskIOMetricName, "B", g_iMaximumQueueSize);1931 // UIMetric diskIOMetric(m_strDiskIOMetricName, "B", m_iMaximumQueueSize); 1930 1932 // diskIOMetric.setDataSeriesName(0, "Write Rate"); 1931 1933 // diskIOMetric.setDataSeriesName(1, "Read Rate"); … … 1934 1936 1935 1937 // /* VM exits metric */ 1936 // UIMetric VMExitsMetric(m_strVMExitMetricName, "times", g_iMaximumQueueSize);1938 // UIMetric VMExitsMetric(m_strVMExitMetricName, "times", m_iMaximumQueueSize); 1937 1939 // VMExitsMetric.setAutoUpdateMaximum(true); 1938 1940 // m_metrics.insert(m_strVMExitMetricName, VMExitsMetric); -
trunk/src/VBox/Frontends/VirtualBox/src/activity/vmactivity/UIVMActivityMonitor.h
r102264 r102266 114 114 * we get from IMachineDebugger m_data values are computed as deltas of total values t - (t-1) */ 115 115 quint64 m_iTotal[DATA_SERIES_SIZE]; 116 #if 0 /* Unused according to Clang 11. */ 117 int m_iMaximumQueueSize; 118 #endif 116 119 117 bool m_fRequiresGuestAdditions; 120 118 /** Used for metrices whose data is computed as total deltas. That is we receieve only total value and … … 123 121 /** Maximum is updated as a new data is added to data queue. */ 124 122 bool m_fAutoUpdateMaximum; 123 int m_iMaximumQueueSize; 125 124 }; 126 125 … … 137 136 public: 138 137 139 UIVMActivityMonitor(EmbedTo enmEmbedding, QWidget *pParent );138 UIVMActivityMonitor(EmbedTo enmEmbedding, QWidget *pParent, int iMaximumQueueSize); 140 139 virtual QUuid machineId() const = 0; 141 140 virtual QString machineName() const = 0; … … 223 222 QString m_strDiskIOInfoLabelReadTotal; 224 223 /** @} */ 225 int iMaximum = 0; 224 int m_iMaximumLabelLength; 225 int m_iMaximumQueueSize; 226 226 227 227 private slots:
Note:
See TracChangeset
for help on using the changeset viewer.