VirtualBox

Changeset 102266 in vbox


Ignore:
Timestamp:
Nov 22, 2023 5:22:07 PM (16 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
160400
Message:

FE/Qt: bugref:10501. Parametrize maximum data series size.

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  
    6262const ULONG g_iPeriod = 1;
    6363/** 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;
    6565/** This is passed to IPerformanceCollector during its setup. When 1 that means IPerformanceCollector object does a data cache of size 1. */
    6666const int g_iMetricSetupCount = 1;
     
    143143public:
    144144
    145     UIChart(QWidget *pParent, UIMetric *pMetric);
     145    UIChart(QWidget *pParent, UIMetric *pMetric, int iMaximumQueueSize);
    146146    void setFontSize(int iFontSize);
    147147    int  fontSize() const;
     
    239239    /** The width of the right margin in characters. */
    240240    int m_iRightMarginCharWidth;
     241    int m_iMaximumQueueSize;
    241242};
    242243
     
    304305*********************************************************************************************************************************/
    305306
    306 UIChart::UIChart(QWidget *pParent, UIMetric *pMetric)
     307UIChart::UIChart(QWidget *pParent, UIMetric *pMetric, int iMaximumQueueSize)
    307308    :QIWithRetranslateUI<QWidget>(pParent)
    308309    , m_pMetric(pMetric)
     
    319320    , m_fDrawCurenValueIndicators(false)
    320321    , m_iRightMarginCharWidth(10)
     322    , m_iMaximumQueueSize(iMaximumQueueSize)
    321323{
    322324    m_axisFont = font();
     
    476478{
    477479    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;
    480482    QIWithRetranslateUI<QWidget>::resizeEvent(pEvent);
    481483}
     
    494496{
    495497    Q_UNUSED(pEvent);
    496     if (!m_pMetric || g_iMaximumQueueSize <= 1)
     498    if (!m_pMetric || m_iMaximumQueueSize <= 1)
    497499        return;
    498500
     
    564566    {
    565567        /* Draw the data lines: */
    566         float fBarWidth = m_lineChartRect.width() / (float) (g_iMaximumQueueSize - 1);
     568        float fBarWidth = m_lineChartRect.width() / (float) (m_iMaximumQueueSize - 1);
    567569        float fH = m_lineChartRect.height() / (float)iMaximum;
    568570        for (int k = 0; k < DATA_SERIES_SIZE; ++k)
     
    680682    int iFontHeight = fontMetrics.height();
    681683
    682     int iTotalSeconds = g_iPeriod * g_iMaximumQueueSize;
     684    int iTotalSeconds = g_iPeriod * m_iMaximumQueueSize;
    683685    for (int i = 0; i < iXSubAxisCount + 2; ++i)
    684686    {
     
    853855    , m_strUnit(strUnit)
    854856    , 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 #endif
    858857    , m_fRequiresGuestAdditions(false)
    859858    , m_fIsInitialized(false)
    860859    , m_fAutoUpdateMaximum(false)
     860    , m_iMaximumQueueSize(iMaximumQueueSize)
    861861{
    862862    RT_NOREF(iMaximumQueueSize); /* Unused according to Clang 11. */
     
    908908        m_iMaximum = qMax(m_iMaximum, iData);
    909909
    910     if (m_data[iDataSeriesIndex].size() > g_iMaximumQueueSize)
     910    if (m_data[iDataSeriesIndex].size() > m_iMaximumQueueSize)
    911911    {
    912912        bool fSearchMax = false;
     
    10291029*********************************************************************************************************************************/
    10301030
    1031 UIVMActivityMonitor::UIVMActivityMonitor(EmbedTo enmEmbedding, QWidget *pParent)
     1031UIVMActivityMonitor::UIVMActivityMonitor(EmbedTo enmEmbedding, QWidget *pParent, int iMaximumQueueSize)
    10321032    : QIWithRetranslateUI<QWidget>(pParent)
    10331033    , m_pTimer(0)
     
    10391039    , m_strDiskIOMetricName("DiskIO")
    10401040    , m_strVMExitMetricName("VMExits")
     1041    , m_iMaximumQueueSize(iMaximumQueueSize)
    10411042    , m_pMainLayout(0)
    10421043    , m_enmEmbedding(enmEmbedding)
     
    10501051void UIVMActivityMonitor::retranslateUi()
    10511052{
    1052     foreach (UIChart *pChart, m_charts)
    1053         pChart->setXAxisLabel(QApplication::translate("UIVMInformationDialog", "Sec."));
    1054 
    10551053    /* Translate the chart info labels: */
    1056     iMaximum = 0;
     1054    m_iMaximumLabelLength = 0;
    10571055    m_strCPUInfoLabelTitle = QApplication::translate("UIVMInformationDialog", "CPU Load");
    1058     iMaximum = qMax(iMaximum, m_strCPUInfoLabelTitle.length());
     1056    m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strCPUInfoLabelTitle.length());
    10591057    m_strCPUInfoLabelGuest = QApplication::translate("UIVMInformationDialog", "Guest Load");
    1060     iMaximum = qMax(iMaximum, m_strCPUInfoLabelGuest.length());
     1058    m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strCPUInfoLabelGuest.length());
    10611059    m_strCPUInfoLabelVMM = QApplication::translate("UIVMInformationDialog", "VMM Load");
    1062     iMaximum = qMax(iMaximum, m_strCPUInfoLabelVMM.length());
     1060    m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strCPUInfoLabelVMM.length());
    10631061    m_strRAMInfoLabelTitle = QApplication::translate("UIVMInformationDialog", "RAM Usage");
    1064     iMaximum = qMax(iMaximum, m_strRAMInfoLabelTitle.length());
     1062    m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strRAMInfoLabelTitle.length());
    10651063    m_strRAMInfoLabelTotal = QApplication::translate("UIVMInformationDialog", "Total");
    1066     iMaximum = qMax(iMaximum, m_strRAMInfoLabelTotal.length());
     1064    m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strRAMInfoLabelTotal.length());
    10671065    m_strRAMInfoLabelFree = QApplication::translate("UIVMInformationDialog", "Free");
    1068     iMaximum = qMax(iMaximum, m_strRAMInfoLabelFree.length());
     1066    m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strRAMInfoLabelFree.length());
    10691067    m_strRAMInfoLabelUsed = QApplication::translate("UIVMInformationDialog", "Used");
    1070     iMaximum = qMax(iMaximum, m_strRAMInfoLabelUsed.length());
     1068    m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strRAMInfoLabelUsed.length());
    10711069    m_strNetworkInfoLabelTitle = QApplication::translate("UIVMInformationDialog", "Network Rate");
    1072     iMaximum = qMax(iMaximum, m_strNetworkInfoLabelTitle.length());
     1070    m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strNetworkInfoLabelTitle.length());
    10731071    m_strNetworkInfoLabelReceived = QApplication::translate("UIVMInformationDialog", "Receive Rate");
    1074     iMaximum = qMax(iMaximum, m_strNetworkInfoLabelReceived.length());
     1072    m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strNetworkInfoLabelReceived.length());
    10751073    m_strNetworkInfoLabelTransmitted = QApplication::translate("UIVMInformationDialog", "Transmit Rate");
    1076     iMaximum = qMax(iMaximum, m_strNetworkInfoLabelTransmitted.length());
     1074    m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strNetworkInfoLabelTransmitted.length());
    10771075    m_strNetworkInfoLabelReceivedTotal = QApplication::translate("UIVMInformationDialog", "Total Received");
    1078     iMaximum = qMax(iMaximum, m_strNetworkInfoLabelReceivedTotal.length());
     1076    m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strNetworkInfoLabelReceivedTotal.length());
    10791077    m_strNetworkInfoLabelTransmittedTotal = QApplication::translate("UIVMInformationDialog", "Total Transmitted");
    1080     iMaximum = qMax(iMaximum, m_strNetworkInfoLabelReceivedTotal.length());
     1078    m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strNetworkInfoLabelReceivedTotal.length());
    10811079    m_strDiskIOInfoLabelTitle = QApplication::translate("UIVMInformationDialog", "Disk IO Rate");
    1082     iMaximum = qMax(iMaximum, m_strDiskIOInfoLabelTitle.length());
     1080    m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strDiskIOInfoLabelTitle.length());
    10831081    m_strDiskIOInfoLabelWritten = QApplication::translate("UIVMInformationDialog", "Write Rate");
    1084     iMaximum = qMax(iMaximum, m_strDiskIOInfoLabelWritten.length());
     1082    m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strDiskIOInfoLabelWritten.length());
    10851083    m_strDiskIOInfoLabelRead = QApplication::translate("UIVMInformationDialog", "Read Rate");
    1086     iMaximum = qMax(iMaximum, m_strDiskIOInfoLabelRead.length());
     1084    m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strDiskIOInfoLabelRead.length());
    10871085    m_strDiskIOInfoLabelWrittenTotal = QApplication::translate("UIVMInformationDialog", "Total Written");
    1088     iMaximum = qMax(iMaximum, m_strDiskIOInfoLabelWrittenTotal.length());
     1086    m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strDiskIOInfoLabelWrittenTotal.length());
    10891087    m_strDiskIOInfoLabelReadTotal = QApplication::translate("UIVMInformationDialog", "Total Read");
    1090     iMaximum = qMax(iMaximum, m_strDiskIOInfoLabelReadTotal.length());
     1088    m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strDiskIOInfoLabelReadTotal.length());
    10911089}
    10921090
     
    11481146        m_infoLabels.insert(strMetricName, pLabel);
    11491147
    1150         UIChart *pChart = new UIChart(this, &(m_metrics[strMetricName]));
     1148        UIChart *pChart = new UIChart(this, &(m_metrics[strMetricName]), m_iMaximumQueueSize);
    11511149        pChart->installEventFilter(this);
    11521150        connect(pChart, &UIChart::sigExportMetricsToFile,
     
    12851283
    12861284UIVMActivityMonitorLocal::UIVMActivityMonitorLocal(EmbedTo enmEmbedding, QWidget *pParent, const CMachine &machine)
    1287     :UIVMActivityMonitor(enmEmbedding, pParent)
     1285    :UIVMActivityMonitor(enmEmbedding, pParent, 120 /* iMaximumQueueSize */)
    12881286    , m_fGuestAdditionsAvailable(false)
    12891287{
     
    13121310{
    13131311    UIVMActivityMonitor::retranslateUi();
     1312
     1313    foreach (UIChart *pChart, m_charts)
     1314        pChart->setXAxisLabel(QApplication::translate("UIVMInformationDialog", "Sec."));
     1315
    13141316    m_strVMExitInfoLabelTitle = QApplication::translate("UIVMInformationDialog", "VM Exits");
    1315     iMaximum = qMax(iMaximum, m_strVMExitInfoLabelTitle.length());
     1317    m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strVMExitInfoLabelTitle.length());
    13161318    m_strVMExitLabelCurrent = QApplication::translate("UIVMInformationDialog", "Current");
    1317     iMaximum = qMax(iMaximum, m_strVMExitLabelCurrent.length());
     1319    m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strVMExitLabelCurrent.length());
    13181320    m_strVMExitLabelTotal = QApplication::translate("UIVMInformationDialog", "Total");
    1319     iMaximum = qMax(iMaximum, m_strVMExitLabelTotal.length());
     1321    m_iMaximumLabelLength = qMax(m_iMaximumLabelLength, m_strVMExitLabelTotal.length());
    13201322
    13211323    /* Compute the maximum label string length and set it as a fixed width to labels to prevent always changing widths: */
    13221324    /* 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);
    13241326    if (!m_infoLabels.isEmpty())
    13251327    {
     
    13291331            QFontMetrics labelFontMetric(pLabel->font());
    13301332#if QT_VERSION >= QT_VERSION_CHECK(5, 11, 0)
    1331             int iWidth = iMaximum * labelFontMetric.horizontalAdvance('X');
     1333            int iWidth = m_iMaximumLabelLength * labelFontMetric.horizontalAdvance('X');
    13321334#else
    1333             int iWidth = iMaximum * labelFontMetric.width('X');
     1335            int iWidth = m_iMaximumLabelLength * labelFontMetric.width('X');
    13341336#endif
    13351337            foreach (QLabel *pInfoLabel, m_infoLabels)
     
    15181520                if (strName.contains("RAM", Qt::CaseInsensitive) && strName.contains("Free", Qt::CaseInsensitive))
    15191521                {
    1520                     UIMetric ramMetric(m_strRAMMetricName, metrics[i].GetUnit(), g_iMaximumQueueSize);
     1522                    UIMetric ramMetric(m_strRAMMetricName, metrics[i].GetUnit(), m_iMaximumQueueSize);
    15211523                    ramMetric.setDataSeriesName(0, "Free");
    15221524                    ramMetric.setDataSeriesName(1, "Used");
     
    15291531
    15301532    /* CPU Metric: */
    1531     UIMetric cpuMetric(m_strCPUMetricName, "%", g_iMaximumQueueSize);
     1533    UIMetric cpuMetric(m_strCPUMetricName, "%", m_iMaximumQueueSize);
    15321534    cpuMetric.setDataSeriesName(0, "Guest Load");
    15331535    cpuMetric.setDataSeriesName(1, "VMM Load");
     
    15351537
    15361538    /* Network metric: */
    1537     UIMetric networkMetric(m_strNetworkMetricName, "B", g_iMaximumQueueSize);
     1539    UIMetric networkMetric(m_strNetworkMetricName, "B", m_iMaximumQueueSize);
    15381540    networkMetric.setDataSeriesName(0, "Receive Rate");
    15391541    networkMetric.setDataSeriesName(1, "Transmit Rate");
     
    15421544
    15431545    /* Disk IO metric */
    1544     UIMetric diskIOMetric(m_strDiskIOMetricName, "B", g_iMaximumQueueSize);
     1546    UIMetric diskIOMetric(m_strDiskIOMetricName, "B", m_iMaximumQueueSize);
    15451547    diskIOMetric.setDataSeriesName(0, "Write Rate");
    15461548    diskIOMetric.setDataSeriesName(1, "Read Rate");
     
    15491551
    15501552    /* VM exits metric */
    1551     UIMetric VMExitsMetric(m_strVMExitMetricName, "times", g_iMaximumQueueSize);
     1553    UIMetric VMExitsMetric(m_strVMExitMetricName, "times", m_iMaximumQueueSize);
    15521554    VMExitsMetric.setAutoUpdateMaximum(true);
    15531555    m_metrics.insert(m_strVMExitMetricName, VMExitsMetric);
     
    17471749
    17481750UIVMActivityMonitorCloud::UIVMActivityMonitorCloud(EmbedTo enmEmbedding, QWidget *pParent, const CCloudMachine &machine)
    1749     :UIVMActivityMonitor(enmEmbedding, pParent)
     1751    :UIVMActivityMonitor(enmEmbedding, pParent, 60 /* iMaximumQueueSize */)
    17501752{
    17511753    m_metricTypeNames[KMetricType_CpuUtilization] = m_strCPUMetricName;
     
    17601762    retranslateUi();
    17611763    prepareActions();
    1762     //connect(&uiCommon(), &UICommon::sigAskToDetachCOM, this, &UIVMActivityMonitorLocal::sltClearCOMData);
    17631764    setMachine(machine);
    17641765}
     
    18011802        {
    18021803            float fValue = data[i].toFloat();
    1803             updateCPUGraphsAndMetric((ULONG)fValue, 0);
     1804            updateCPUGraphsAndMetric((ULONG) fValue, 0);
    18041805        }
    18051806    }
    1806 
    18071807    sender()->deleteLater();
    18081808}
     
    18251825{
    18261826    UIVMActivityMonitor::retranslateUi();
     1827    foreach (UIChart *pChart, m_charts)
     1828        pChart->setXAxisLabel(QApplication::translate("UIVMInformationDialog", "Min."));
    18271829}
    18281830
     
    19081910void UIVMActivityMonitorCloud::prepareMetrics()
    19091911{
    1910     // UIMetric ramMetric(m_strRAMMetricName, metrics[i].GetUnit(), g_iMaximumQueueSize);
     1912    // UIMetric ramMetric(m_strRAMMetricName, metrics[i].GetUnit(), m_iMaximumQueueSize);
    19111913    // ramMetric.setDataSeriesName(0, "Free");
    19121914    // ramMetric.setDataSeriesName(1, "Used");
     
    19151917
    19161918    /* CPU Metric: */
    1917     UIMetric cpuMetric(m_strCPUMetricName, "%", g_iMaximumQueueSize);
     1919    UIMetric cpuMetric(m_strCPUMetricName, "%", m_iMaximumQueueSize);
    19181920    cpuMetric.setDataSeriesName(0, "CPU Utilization");
    19191921    m_metrics.insert(m_strCPUMetricName, cpuMetric);
    19201922
    19211923    // /* Network metric: */
    1922     // UIMetric networkMetric(m_strNetworkMetricName, "B", g_iMaximumQueueSize);
     1924    // UIMetric networkMetric(m_strNetworkMetricName, "B", m_iMaximumQueueSize);
    19231925    // networkMetric.setDataSeriesName(0, "Receive Rate");
    19241926    // networkMetric.setDataSeriesName(1, "Transmit Rate");
     
    19271929
    19281930    // /* Disk IO metric */
    1929     // UIMetric diskIOMetric(m_strDiskIOMetricName, "B", g_iMaximumQueueSize);
     1931    // UIMetric diskIOMetric(m_strDiskIOMetricName, "B", m_iMaximumQueueSize);
    19301932    // diskIOMetric.setDataSeriesName(0, "Write Rate");
    19311933    // diskIOMetric.setDataSeriesName(1, "Read Rate");
     
    19341936
    19351937    // /* VM exits metric */
    1936     // UIMetric VMExitsMetric(m_strVMExitMetricName, "times", g_iMaximumQueueSize);
     1938    // UIMetric VMExitsMetric(m_strVMExitMetricName, "times", m_iMaximumQueueSize);
    19371939    // VMExitsMetric.setAutoUpdateMaximum(true);
    19381940    // m_metrics.insert(m_strVMExitMetricName, VMExitsMetric);
  • trunk/src/VBox/Frontends/VirtualBox/src/activity/vmactivity/UIVMActivityMonitor.h

    r102264 r102266  
    114114      * we get from IMachineDebugger m_data values are computed as deltas of total values t - (t-1) */
    115115    quint64 m_iTotal[DATA_SERIES_SIZE];
    116 #if 0 /* Unused according to Clang 11. */
    117     int m_iMaximumQueueSize;
    118 #endif
     116
    119117    bool m_fRequiresGuestAdditions;
    120118    /** Used for metrices whose data is computed as total deltas. That is we receieve only total value and
     
    123121    /** Maximum is updated as a new data is added to data queue. */
    124122    bool m_fAutoUpdateMaximum;
     123    int m_iMaximumQueueSize;
    125124};
    126125
     
    137136public:
    138137
    139     UIVMActivityMonitor(EmbedTo enmEmbedding, QWidget *pParent);
     138    UIVMActivityMonitor(EmbedTo enmEmbedding, QWidget *pParent, int iMaximumQueueSize);
    140139    virtual QUuid machineId() const = 0;
    141140    virtual QString machineName() const = 0;
     
    223222        QString m_strDiskIOInfoLabelReadTotal;
    224223    /** @} */
    225         int iMaximum = 0;
     224    int m_iMaximumLabelLength;
     225    int m_iMaximumQueueSize;
    226226
    227227private slots:
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