VirtualBox

Ignore:
Timestamp:
Mar 24, 2020 4:59:50 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
136609
Message:

FE/Qt: bugref:9686. Getting RAM usage.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/monitor/resource/UIResourceMonitor.cpp

    r83380 r83392  
    4747#include "CMachine.h"
    4848#include "CMachineDebugger.h"
     49#include "CPerformanceMetric.h"
    4950
    5051/* Other VBox includes: */
     
    8889    QUuid    m_VMuid;
    8990    QString  m_strVMName;
    90     quint64 m_uCPUGuestLoad;
    91     quint64 m_uCPUVMMLoad;
     91    quint64  m_uCPUGuestLoad;
     92    quint64  m_uCPUVMMLoad;
     93
     94    quint64  m_uTotalRAM;
     95    quint64  m_uUsedRAM;
     96    float    m_fRAMUsagePercentage;
     97
    9298    quint64 m_uNetworkDownRate;
    9399    quint64 m_uNetworkUpRate;
     
    104110
    105111    CMachineDebugger m_comDebugger;
     112    /** @name The following are used during UIPerformanceCollector::QueryMetricsData(..)
     113      * @{ */
     114        QVector<QString> m_nameList;
     115        QVector<CUnknown> m_objectList;
     116    /** @} */
     117    CPerformanceCollector m_performanceMonitor;
     118
     119private:
     120
     121    void initPerformanceCollector();
    106122
    107123};
     124
    108125
    109126/*********************************************************************************************************************************
     
    165182
    166183    QTimer *m_pTimer;
     184
    167185};
    168186
     
    188206    : m_VMuid(uid)
    189207    , m_strVMName(strVMName)
     208    , m_uCPUGuestLoad(0)
     209    , m_uCPUVMMLoad(0)
     210    , m_uTotalRAM(0)
     211    , m_uUsedRAM(0)
     212    , m_fRAMUsagePercentage(0)
    190213    , m_uNetworkDownRate(0)
    191214    , m_uNetworkUpRate(0)
     
    206229            m_comDebugger = comConsole.GetDebugger();
    207230    }
     231    initPerformanceCollector();
    208232}
    209233
    210234UIResourceMonitorItem::UIResourceMonitorItem()
    211235    : m_VMuid(QUuid())
     236    , m_uCPUGuestLoad(0)
     237    , m_uCPUVMMLoad(0)
     238    , m_uTotalRAM(0)
     239    , m_uUsedRAM(0)
     240    , m_fRAMUsagePercentage(0)
    212241    , m_uNetworkDownRate(0)
    213242    , m_uNetworkUpRate(0)
     
    221250    , m_uVMExitTotal(0)
    222251{
     252    initPerformanceCollector();
    223253}
    224254
    225255UIResourceMonitorItem::UIResourceMonitorItem(const QUuid &uid)
    226256    : m_VMuid(uid)
     257    , m_uCPUGuestLoad(0)
     258    , m_uCPUVMMLoad(0)
     259    , m_uTotalRAM(0)
     260    , m_uUsedRAM(0)
     261    , m_fRAMUsagePercentage(0)
    227262    , m_uNetworkDownRate(0)
    228263    , m_uNetworkUpRate(0)
     
    236271    , m_uVMExitTotal(0)
    237272{
     273    initPerformanceCollector();
    238274}
    239275
     
    245281}
    246282
     283void UIResourceMonitorItem::initPerformanceCollector()
     284{
     285    /* Initialize and configure CPerformanceCollector: */
     286    const ULONG iPeriod = 1;
     287    const int iMetricSetupCount = 1;
     288    m_performanceMonitor = uiCommon().virtualBox().GetPerformanceCollector();
     289    m_nameList << "Guest/RAM/Usage*";
     290    m_objectList = QVector<CUnknown>(m_nameList.size(), CUnknown());
     291    m_performanceMonitor.SetupMetrics(m_nameList, m_objectList, iPeriod, iMetricSetupCount);
     292}
    247293
    248294/*********************************************************************************************************************************
     
    310356    if (!index.isValid() || role != Qt::DisplayRole || index.row() >= rowCount())
    311357        return QVariant();
    312     // if (index.column() >= m_columnShown.size() || !m_columnShown[index.column()])
    313     //     return QVariant();
     358
    314359    switch (index.column())
    315360    {
     
    322367        case VMResouceMonitorColumn_CPUVMMLoad:
    323368            return m_itemList[index.row()].m_uCPUVMMLoad;
     369            break;
     370        case VMResouceMonitorColumn_RAMUsedAndTotal:
     371            return QString("%1/%2").arg(uiCommon().formatSize(_1K * m_itemList[index.row()].m_uUsedRAM, iDecimalCount)).
     372                arg(uiCommon().formatSize(_1K * m_itemList[index.row()].m_uTotalRAM, iDecimalCount));
     373            break;
     374        case VMResouceMonitorColumn_RAMUsedPercentage:
     375            return m_itemList[index.row()].m_fRAMUsagePercentage;
    324376            break;
    325377        case VMResouceMonitorColumn_NetworkUpRate:
     
    407459    for (int i = 0; i < m_itemList.size(); ++i)
    408460    {
     461        if (!m_itemList[i].m_performanceMonitor.isNull())
     462        {
     463            /* RAM usage: */
     464            quint64 uFreeRAM = 0;
     465            UIMonitorCommon::getRAMLoad(m_itemList[i].m_performanceMonitor, m_itemList[i].m_nameList, m_itemList[i].m_objectList,
     466                                        m_itemList[i].m_uTotalRAM, uFreeRAM);
     467            m_itemList[i].m_uUsedRAM = m_itemList[i].m_uTotalRAM - uFreeRAM;
     468            if (m_itemList[i].m_uTotalRAM != 0)
     469                m_itemList[i].m_fRAMUsagePercentage = 100.f * (m_itemList[i].m_uUsedRAM / (float)m_itemList[i].m_uTotalRAM);
     470        }
     471
    409472        if (!m_itemList[i].m_comDebugger.isNull())
    410473        {
     474            /* CPU Load: */
    411475            m_itemList[i].m_comDebugger.GetCPULoad(0x7fffffff, aPctExecuting, aPctHalted, aPctVMM);
    412476            m_itemList[i].m_uCPUGuestLoad = aPctExecuting;
    413477            m_itemList[i].m_uCPUVMMLoad = aPctVMM;
     478
    414479            /* Network rate: */
    415480            quint64 uPrevDownTotal = m_itemList[i].m_uNetworkDownTotal;
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