Changeset 103157 in vbox
- Timestamp:
- Feb 1, 2024 10:24:36 AM (8 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/activity/overview/UIVMActivityOverviewWidget.cpp
r103139 r103157 246 246 virtual bool isRunning() const = 0; 247 247 virtual bool isCloudVM() const = 0; 248 virtual void updateColumnData() = 0;249 248 virtual void setMachineState(int iState) = 0; 250 249 251 250 QString columnData(int iColumnIndex) const; 252 251 253 254 ULONG m_uCPUGuestLoad;255 252 quint64 m_uTotalRAM; 256 253 quint64 m_uFreeRAM; 257 254 quint64 m_uUsedRAM; 258 255 float m_fRAMUsagePercentage; 259 quint64 m_uNetworkDownRate; 260 quint64 m_uNetworkUpRate; 256 261 257 quint64 m_uNetworkDownTotal; 262 258 quint64 m_uNetworkUpTotal; 263 259 264 quint64 m_uDiskWriteRate;265 quint64 m_uDiskReadRate;266 260 quint64 m_uDiskWriteTotal; 267 261 quint64 m_uDiskReadTotal; … … 271 265 QUuid m_VMuid; 272 266 QString m_strVMName; 273 274 virtual void updateMetricData() = 0;275 267 276 268 /** The strings of each column for the item. We update this during performance query … … 299 291 bool isWithGuestAdditions(); 300 292 void resetDebugger(); 293 void updateColumnData(); 294 301 295 virtual bool isRunning() const override; 302 296 virtual bool isCloudVM() const override; 303 virtual void updateColumnData() override;304 297 virtual QString machineStateString() const override; 305 298 virtual void setMachineState(int iState) override; … … 307 300 protected: 308 301 309 v irtual void updateMetricData() override;302 void updateMetricData(); 310 303 311 304 private: … … 315 308 KMachineState m_enmMachineState; 316 309 317 ULONG m_uCPUVMMLoad;318 quint64 m_uVMExitRate;319 310 quint64 m_uVMExitTotal; 320 311 CMachineDebugger m_comDebugger; … … 336 327 virtual bool isRunning() const override; 337 328 virtual bool isCloudVM() const override; 338 virtual void updateColumnData() override;339 329 virtual QString machineStateString() const override; 340 330 virtual void setMachineState(int iState) override; 341 331 342 332 protected: 343 344 virtual void updateMetricData() override;345 333 346 334 private slots: … … 353 341 354 342 void getMetricList(); 343 void resetColumData(); 344 355 345 QTimer *m_pTimer; 356 346 CCloudMachine m_comCloudMachine; … … 423 413 void sltMachineStateChanged(const QUuid &uId, const KMachineState state); 424 414 void sltMachineRegistered(const QUuid &uId, bool fRegistered); 425 void sltLocalUpdateTimeout(); 426 void sltCloudUpdateTimeout(); 415 void sltLocalVMUpdateTimeout(); 427 416 428 417 private: … … 438 427 QVector<UIActivityOverviewItem*> m_itemList; 439 428 QMap<int, QString> m_columnTitles; 440 QTimer *m_pLocal UpdateTimer;441 QTimer *m_pCloudUpdateTimer; 429 QTimer *m_pLocalVMUpdateTimer; 430 442 431 /** @name The following are used during UIPerformanceCollector::QueryMetricsData(..) 443 432 * @{ */ … … 871 860 UIActivityOverviewItem::UIActivityOverviewItem(QObject *pParent, const QUuid &uid, const QString &strVMName) 872 861 : QObject(pParent) 873 , m_uCPUGuestLoad(0)874 862 , m_uTotalRAM(0) 875 863 , m_uFreeRAM(0) 876 864 , m_uUsedRAM(0) 877 865 , m_fRAMUsagePercentage(0) 878 , m_uNetworkDownRate(0)879 , m_uNetworkUpRate(0)880 866 , m_uNetworkDownTotal(0) 881 867 , m_uNetworkUpTotal(0) 882 , m_uDiskWriteRate(0)883 , m_uDiskReadRate(0)884 868 , m_uDiskWriteTotal(0) 885 869 , m_uDiskReadTotal(0) … … 892 876 UIActivityOverviewItem::UIActivityOverviewItem() 893 877 : QObject() 894 , m_uCPUGuestLoad(0)895 878 , m_uTotalRAM(0) 896 879 , m_uUsedRAM(0) 897 880 , m_fRAMUsagePercentage(0) 898 , m_uNetworkDownRate(0)899 , m_uNetworkUpRate(0)900 881 , m_uNetworkDownTotal(0) 901 882 , m_uNetworkUpTotal(0) 902 , m_uDiskWriteRate(0)903 , m_uDiskReadRate(0)904 883 , m_uDiskWriteTotal(0) 905 884 , m_uDiskReadTotal(0) … … 966 945 m_pTimer->setInterval(60 * 1000); 967 946 } 947 resetColumData(); 968 948 } 969 949 … … 990 970 { 991 971 return true; 992 }993 994 void UIActivityOverviewItemCloud::updateMetricData()995 {996 }997 998 void UIActivityOverviewItemCloud::updateColumnData()999 {1000 updateMetricData();1001 1002 //int iDecimalCount = 2;1003 1004 1005 972 } 1006 973 … … 1031 998 Q_UNUSED(data); 1032 999 Q_UNUSED(timeStamps); 1033 // if (!data.isEmpty()) 1034 // printf("%d %lld %s\n", enmMetricType, data.size(), qPrintable(data[0])); 1000 AssertReturnVoid(!data.isEmpty()); 1001 1002 if (enmMetricType == KMetricType_CpuUtilization) 1003 { 1004 m_columnData[VMActivityOverviewColumn_CPUGuestLoad] = 1005 QString("%1%").arg(QString::number(data[0].toFloat(), 'f', 2)); 1006 } 1007 else if (enmMetricType == KMetricType_MemoryUtilization) 1008 { 1009 m_columnData[VMActivityOverviewColumn_RAMUsedPercentage] = 1010 QString("%1%").arg(QString::number(data[0].toFloat(), 'f', 2)); 1011 } 1012 1035 1013 sender()->deleteLater(); 1036 1014 } … … 1051 1029 m_pTimer->stop(); 1052 1030 } 1031 } 1032 1033 void UIActivityOverviewItemCloud::resetColumData() 1034 { 1035 for (int i = (int) VMActivityOverviewColumn_CPUGuestLoad; 1036 i < (int)VMActivityOverviewColumn_Max; ++i) 1037 m_columnData[i] = UIVMActivityOverviewWidget::tr("N/A"); 1053 1038 } 1054 1039 … … 1079 1064 } 1080 1065 else 1066 { 1081 1067 m_pTimer->stop(); 1068 resetColumData(); 1069 } 1082 1070 1083 1071 if (sender()) … … 1092 1080 UIActivityOverviewItemLocal::UIActivityOverviewItemLocal(QObject *pParent, const QUuid &uid, const QString &strVMName) 1093 1081 : UIActivityOverviewItem(pParent, uid, strVMName) 1094 , m_uCPUVMMLoad(0)1095 , m_uVMExitRate(0)1096 1082 , m_uVMExitTotal(0) 1097 1083 { … … 1101 1087 1102 1088 UIActivityOverviewItemLocal::UIActivityOverviewItemLocal() 1103 : m_uCPUVMMLoad(0) 1104 , m_uVMExitRate(0) 1105 , m_uVMExitTotal(0) 1089 : m_uVMExitTotal(0) 1106 1090 { 1107 1091 } … … 1158 1142 void UIActivityOverviewItemLocal::updateMetricData() 1159 1143 { 1160 if (!m_comDebugger.isOk()) 1161 return; 1144 1145 1146 } 1147 1148 void UIActivityOverviewItemLocal::updateColumnData() 1149 { 1150 AssertReturnVoid(m_comDebugger.isOk()); 1151 updateMetricData(); 1152 1153 int iDecimalCount = 2; 1162 1154 1163 1155 /* CPU Load: */ 1164 1156 ULONG aPctHalted; 1165 m_comDebugger.GetCPULoad(0x7fffffff, m_uCPUGuestLoad, aPctHalted, m_uCPUVMMLoad); 1166 1167 /* Network rate: */ 1168 quint64 uPrevDownTotal = m_uNetworkDownTotal; 1169 quint64 uPrevUpTotal = m_uNetworkUpTotal; 1170 UIMonitorCommon::getNetworkLoad(m_comDebugger, m_uNetworkDownTotal, m_uNetworkUpTotal); 1171 m_uNetworkDownRate = m_uNetworkDownTotal - uPrevDownTotal; 1172 m_uNetworkUpRate = m_uNetworkUpTotal - uPrevUpTotal; 1173 1174 /* IO rate: */ 1175 quint64 uPrevWriteTotal = m_uDiskWriteTotal; 1176 quint64 uPrevReadTotal = m_uDiskReadTotal; 1177 UIMonitorCommon::getDiskLoad(m_comDebugger, m_uDiskWriteTotal, m_uDiskReadTotal); 1178 m_uDiskWriteRate = m_uDiskWriteTotal - uPrevWriteTotal; 1179 m_uDiskReadRate = m_uDiskReadTotal - uPrevReadTotal; 1180 1181 /* VM Exits: */ 1182 quint64 uPrevVMExitsTotal = m_uVMExitTotal; 1183 UIMonitorCommon::getVMMExitCount(m_comDebugger, m_uVMExitTotal); 1184 m_uVMExitRate = m_uVMExitTotal - uPrevVMExitsTotal; 1185 } 1186 1187 void UIActivityOverviewItemLocal::updateColumnData() 1188 { 1189 updateMetricData(); 1190 1191 int iDecimalCount = 2; 1192 1157 ULONG uCPUGuestLoad; 1158 ULONG uCPUVMMLoad; 1159 m_comDebugger.GetCPULoad(0x7fffffff, uCPUGuestLoad, aPctHalted, uCPUVMMLoad); 1193 1160 m_columnData[VMActivityOverviewColumn_CPUGuestLoad] = 1194 QString("%1%").arg(QString::number( m_uCPUGuestLoad));1161 QString("%1%").arg(QString::number(uCPUGuestLoad)); 1195 1162 m_columnData[VMActivityOverviewColumn_CPUVMMLoad] = 1196 QString("%1%").arg(QString::number(m_uCPUVMMLoad)); 1197 1163 QString("%1%").arg(QString::number(uCPUVMMLoad)); 1164 1165 /* RAM Utilization: */ 1198 1166 if (isWithGuestAdditions()) 1199 1167 m_columnData[VMActivityOverviewColumn_RAMUsedAndTotal] = … … 1203 1171 m_columnData[VMActivityOverviewColumn_RAMUsedAndTotal] = UIVMActivityOverviewWidget::tr("N/A"); 1204 1172 1173 /* RAM Utilization %: */ 1205 1174 if (isWithGuestAdditions()) 1206 1175 m_columnData[VMActivityOverviewColumn_RAMUsedPercentage] = … … 1209 1178 m_columnData[VMActivityOverviewColumn_RAMUsedPercentage] = UIVMActivityOverviewWidget::tr("N/A"); 1210 1179 1180 /* Network rate: */ 1181 quint64 uPrevDownTotal = m_uNetworkDownTotal; 1182 quint64 uPrevUpTotal = m_uNetworkUpTotal; 1183 UIMonitorCommon::getNetworkLoad(m_comDebugger, m_uNetworkDownTotal, m_uNetworkUpTotal); 1184 quint64 uNetworkDownRate = m_uNetworkDownTotal - uPrevDownTotal; 1185 quint64 uNetworkUpRate = m_uNetworkUpTotal - uPrevUpTotal; 1211 1186 m_columnData[VMActivityOverviewColumn_NetworkUpRate] = 1212 QString("%1").arg(UITranslator::formatSize(m_uNetworkUpRate, iDecimalCount)); 1213 1187 QString("%1").arg(UITranslator::formatSize(uNetworkUpRate, iDecimalCount)); 1214 1188 m_columnData[VMActivityOverviewColumn_NetworkDownRate] = 1215 QString("%1").arg(UITranslator::formatSize(m_uNetworkDownRate, iDecimalCount)); 1216 1189 QString("%1").arg(UITranslator::formatSize(uNetworkDownRate, iDecimalCount)); 1217 1190 m_columnData[VMActivityOverviewColumn_NetworkUpTotal] = 1218 1191 QString("%1").arg(UITranslator::formatSize(m_uNetworkUpTotal, iDecimalCount)); 1219 1220 1192 m_columnData[VMActivityOverviewColumn_NetworkDownTotal] = 1221 1193 QString("%1").arg(UITranslator::formatSize(m_uNetworkDownTotal, iDecimalCount)); 1222 1194 1195 1196 /* IO rate: */ 1197 quint64 uPrevWriteTotal = m_uDiskWriteTotal; 1198 quint64 uPrevReadTotal = m_uDiskReadTotal; 1199 UIMonitorCommon::getDiskLoad(m_comDebugger, m_uDiskWriteTotal, m_uDiskReadTotal); 1200 quint64 uDiskWriteRate = m_uDiskWriteTotal - uPrevWriteTotal; 1201 quint64 uDiskReadRate = m_uDiskReadTotal - uPrevReadTotal; 1223 1202 m_columnData[VMActivityOverviewColumn_DiskIOReadRate] = 1224 QString("%1").arg(UITranslator::formatSize(m_uDiskReadRate, iDecimalCount)); 1225 1203 QString("%1").arg(UITranslator::formatSize(uDiskReadRate, iDecimalCount)); 1226 1204 m_columnData[VMActivityOverviewColumn_DiskIOWriteRate] = 1227 QString("%1").arg(UITranslator::formatSize(m_uDiskWriteRate, iDecimalCount)); 1228 1205 QString("%1").arg(UITranslator::formatSize(uDiskWriteRate, iDecimalCount)); 1229 1206 m_columnData[VMActivityOverviewColumn_DiskIOReadTotal] = 1230 1207 QString("%1").arg(UITranslator::formatSize(m_uDiskReadTotal, iDecimalCount)); 1231 1232 1208 m_columnData[VMActivityOverviewColumn_DiskIOWriteTotal] = 1233 1209 QString("%1").arg(UITranslator::formatSize(m_uDiskWriteTotal, iDecimalCount)); 1234 1210 1211 /* VM Exits: */ 1212 quint64 uPrevVMExitsTotal = m_uVMExitTotal; 1213 UIMonitorCommon::getVMMExitCount(m_comDebugger, m_uVMExitTotal); 1214 quint64 uVMExitRate = m_uVMExitTotal - uPrevVMExitsTotal; 1235 1215 m_columnData[VMActivityOverviewColumn_VMExits] = 1236 QString("%1/%2").arg(UITranslator::addMetricSuffixToNumber( m_uVMExitRate)).1216 QString("%1/%2").arg(UITranslator::addMetricSuffixToNumber(uVMExitRate)). 1237 1217 arg(UITranslator::addMetricSuffixToNumber(m_uVMExitTotal)); 1238 1218 } … … 1320 1300 UIActivityOverviewModel::UIActivityOverviewModel(QObject *parent /*= 0*/) 1321 1301 :QAbstractTableModel(parent) 1322 , m_pLocalUpdateTimer(new QTimer(this)) 1323 , m_pCloudUpdateTimer(new QTimer(this)) 1302 , m_pLocalVMUpdateTimer(new QTimer(this)) 1324 1303 { 1325 1304 initialize(); … … 1336 1315 connect(gVBoxEvents, &UIVirtualBoxEventHandler::sigMachineRegistered, 1337 1316 this, &UIActivityOverviewModel::sltMachineRegistered); 1338 if (m_pLocalUpdateTimer) 1339 { 1340 connect(m_pLocalUpdateTimer, &QTimer::timeout, this, &UIActivityOverviewModel::sltLocalUpdateTimeout); 1341 m_pLocalUpdateTimer->start(1000); 1342 } 1343 if (m_pCloudUpdateTimer) 1344 { 1345 connect(m_pCloudUpdateTimer, &QTimer::timeout, this, &UIActivityOverviewModel::sltCloudUpdateTimeout); 1346 m_pCloudUpdateTimer->start(60 * 1000); 1317 if (m_pLocalVMUpdateTimer) 1318 { 1319 connect(m_pLocalVMUpdateTimer, &QTimer::timeout, this, &UIActivityOverviewModel::sltLocalVMUpdateTimeout); 1320 m_pLocalVMUpdateTimer->start(1000); 1347 1321 } 1348 1322 } … … 1362 1336 void UIActivityOverviewModel::setShouldUpdate(bool fShouldUpdate) 1363 1337 { 1364 if (m_pLocal UpdateTimer)1338 if (m_pLocalVMUpdateTimer) 1365 1339 { 1366 1340 if (fShouldUpdate) 1367 m_pLocal UpdateTimer->start();1341 m_pLocalVMUpdateTimer->start(); 1368 1342 else 1369 m_pLocal UpdateTimer->stop();1343 m_pLocalVMUpdateTimer->stop(); 1370 1344 } 1371 1345 } … … 1566 1540 } 1567 1541 1568 void UIActivityOverviewModel::sltCloudUpdateTimeout() 1569 { 1570 for (int i = 0; i < m_itemList.size(); ++i) 1571 { 1572 if (!m_itemList[i] && !m_itemList[i]->isCloudVM() && !m_itemList[i]->isRunning()) 1573 continue; 1574 m_itemList[i]->updateColumnData(); 1575 } 1576 } 1577 1578 void UIActivityOverviewModel::sltLocalUpdateTimeout() 1542 void UIActivityOverviewModel::sltLocalVMUpdateTimeout() 1579 1543 { 1580 1544 /* Host's RAM usage is obtained from IHost not from IPerformanceCollector: */ … … 1586 1550 for (int i = 0; i < m_itemList.size(); ++i) 1587 1551 { 1588 if (m_itemList[i] && !m_itemList[i]->isCloudVM()) 1589 m_itemList[i]->updateColumnData(); 1552 UIActivityOverviewItemLocal *pItem = qobject_cast<UIActivityOverviewItemLocal*>(m_itemList[i]); 1553 if (!pItem || !pItem->isRunning()) 1554 continue; 1555 pItem->updateColumnData(); 1590 1556 } 1591 1557
Note:
See TracChangeset
for help on using the changeset viewer.

