VirtualBox

Changeset 28036 in vbox for trunk/src/VBox/Main


Ignore:
Timestamp:
Apr 7, 2010 9:47:43 AM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
59743
Message:

More metrics changes

Location:
trunk/src/VBox/Main
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/GuestImpl.cpp

    r28032 r28036  
    255255STDMETHODIMP Guest::InternalGetStatistics(ULONG *aCpuUser, ULONG *aCpuKernel, ULONG *aCpuIdle,
    256256                                          ULONG *aMemTotal, ULONG *aMemFree, ULONG *aMemBalloon,
    257                                           ULONG *aMemCache, ULONG *aPageTotal, ULONG *aMemFreeTotal)
     257                                          ULONG *aMemCache, ULONG *aPageTotal,
     258                                          ULONG *aMemAllocTotal, ULONG *aMemFreeTotal, ULONG *aMemBalloonTotal)
    258259{
    259260    CheckComArgOutPointerValid(aCpuUser);
     
    283284    if (pVM.isOk())
    284285    {
    285         unsigned uFreeTotal;
     286        uint64_t uFreeTotal, uAllocTotal, uBalloonedTotal;
    286287        *aMemFreeTotal = 0;
    287         int rc = PGMR3QueryFreeMemory(pVM.raw(), &uFreeTotal);
     288        int rc = PGMR3QueryVMMMemoryStats(pVM.raw(), &uAllocTotal, &uFreeTotal, &uBalloonedTotal);
    288289        AssertRC(rc);
    289290        if (rc == VINF_SUCCESS)
    290             *aMemFreeTotal = uFreeTotal;
     291        {
     292            *aMemAllocTotal   = uAllocTotal / _1K;  /* bytes -> KB */
     293            *aMemFreeTotal    = uFreeTotal / _1K;
     294            *aMemBalloonTotal = uBalloonedTotal / _1K;
     295        }
    291296    }
    292297    else
  • trunk/src/VBox/Main/HostImpl.cpp

    r28012 r28036  
    24112411    pm::SubMetric *ramUsageFree  = new pm::SubMetric("RAM/Usage/Free",
    24122412        "Physical memory currently available to applications.");
     2413    pm::SubMetric *ramVMMUsed = new pm::SubMetric("RAM/VMM/Used",
     2414        "Total physical memory used by the hypervisor.");
     2415    pm::SubMetric *ramVMMFree = new pm::SubMetric("RAM/VMM/Free",
     2416        "Total physical memory free inside the hypervisor.");
     2417    pm::SubMetric *ramVMMBallooned  = new pm::SubMetric("RAM/VMM/Ballooned",
     2418        "Total physical memory ballooned by the hypervisor.");
     2419
    24132420
    24142421    /* Create and register base metrics */
     
    24222429    aCollector->registerBaseMetric (cpuMhz);
    24232430    pm::BaseMetric *ramUsage = new pm::HostRamUsage(hal, objptr, ramUsageTotal, ramUsageUsed,
    2424                                            ramUsageFree);
     2431                                           ramUsageFree, ramVMMUsed, ramVMMFree, ramVMMBallooned);
    24252432    aCollector->registerBaseMetric (ramUsage);
    24262433
     
    24802487    aCollector->registerMetric(new pm::Metric(ramUsage, ramUsageFree,
    24812488                                              new pm::AggregateMax()));
     2489
     2490    aCollector->registerMetric(new pm::Metric(ramUsage, ramVMMUsed, 0));
     2491    aCollector->registerMetric(new pm::Metric(ramUsage, ramVMMUsed,
     2492                                              new pm::AggregateAvg()));
     2493    aCollector->registerMetric(new pm::Metric(ramUsage, ramVMMUsed,
     2494                                              new pm::AggregateMin()));
     2495    aCollector->registerMetric(new pm::Metric(ramUsage, ramVMMUsed,
     2496                                              new pm::AggregateMax()));
     2497
     2498    aCollector->registerMetric(new pm::Metric(ramUsage, ramVMMFree, 0));
     2499    aCollector->registerMetric(new pm::Metric(ramUsage, ramVMMFree,
     2500                                              new pm::AggregateAvg()));
     2501    aCollector->registerMetric(new pm::Metric(ramUsage, ramVMMFree,
     2502                                              new pm::AggregateMin()));
     2503    aCollector->registerMetric(new pm::Metric(ramUsage, ramVMMFree,
     2504                                              new pm::AggregateMax()));
     2505
     2506    aCollector->registerMetric(new pm::Metric(ramUsage, ramVMMBallooned, 0));
     2507    aCollector->registerMetric(new pm::Metric(ramUsage, ramVMMBallooned,
     2508                                              new pm::AggregateAvg()));
     2509    aCollector->registerMetric(new pm::Metric(ramUsage, ramVMMBallooned,
     2510                                              new pm::AggregateMin()));
     2511    aCollector->registerMetric(new pm::Metric(ramUsage, ramVMMBallooned,
     2512                                              new pm::AggregateMax()));
    24822513};
    24832514
  • trunk/src/VBox/Main/Performance.cpp

    r28012 r28036  
    168168        &&  iTick != mLastTick)
    169169    {
    170         ULONG ulMemFreeTotal;
     170        ULONG ulMemAllocTotal, ulMemFreeTotal, ulMemBalloonTotal;
    171171
    172172        mGuest->InternalGetStatistics(&mCpuUser, &mCpuKernel, &mCpuIdle,
    173173                                      &mMemTotal, &mMemFree, &mMemBalloon, &mMemCache,
    174                                       &mPageTotal, &ulMemFreeTotal);
     174                                      &mPageTotal, &ulMemAllocTotal, &ulMemFreeTotal, &ulMemBalloonTotal);
    175175
    176176        if (mHostHAL)
    177             mHostHAL->setMemFreeTotal(ulMemFreeTotal);
     177            mHostHAL->setMemHypervisorStats(ulMemAllocTotal, ulMemFreeTotal, ulMemBalloonTotal);
    178178
    179179        mLastTick = iTick;
     
    303303        mTotal->put(total);
    304304        mUsed->put(used);
    305         mAvailable->put(available + mHAL->getMemFreeTotal());
    306     }
     305        mAvailable->put(available);
     306
     307    }
     308    ULONG allocVMM, freeVMM, balloonVMM;
     309
     310    mHAL->getMemHypervisorStats(&allocVMM, &freeVMM, &balloonVMM);
     311    mAllocVMM->put(allocVMM);
     312    mFreeVMM->put(freeVMM);
     313    mBalloonVMM->put(balloonVMM);
    307314}
    308315
     
    426433
    427434    mGuestHAL->getGuestMemLoad(&ulMemTotal, &ulMemFree, &ulMemBalloon, &ulMemCache, &ulPageTotal);
    428     mTotal->put(ulMemTotal);
    429     mFree->put(ulMemFree);
    430     mBallooned->put(ulMemBalloon);
    431     mCache->put(ulMemCache);
    432     mPagedTotal->put(ulPageTotal);
     435    mTotal->put(ulMemTotal * (_1M / _1K));      /* MB -> KB */
     436    mFree->put(ulMemFree * (_1M / _1K));
     437    mBallooned->put(ulMemBalloon * (_1M / _1K));
     438    mCache->put(ulMemCache * (_1M / _1K));
     439    mPagedTotal->put(ulPageTotal * (_1M / _1K));
    433440}
    434441
  • trunk/src/VBox/Main/PerformanceImpl.cpp

    r28012 r28036  
    6868    "RAM/Usage/Free:min",
    6969    "RAM/Usage/Free:max",
     70    "RAM/VMM/Used",
     71    "RAM/VMM/Used:avg",
     72    "RAM/VMM/Used:min",
     73    "RAM/VMM/Used:max",
     74    "RAM/VMM/Free",
     75    "RAM/VMM/Free:avg",
     76    "RAM/VMM/Free:min",
     77    "RAM/VMM/Free:max",
     78    "RAM/VMM/Ballooned",
     79    "RAM/VMM/Ballooned:avg",
     80    "RAM/VMM/Ballooned:min",
     81    "RAM/VMM/Ballooned:max",
    7082    "Guest/CPU/Load/User",
    7183    "Guest/CPU/Load/User:avg",
  • trunk/src/VBox/Main/idl/VirtualBox.xidl

    r28032 r28036  
    83538353  <interface
    83548354     name="IGuest" extends="$unknown"
    8355      uuid="54ebdc27-89ca-4bf8-a58a-48077679a3af"
     8355     uuid="8cf03bf9-7478-42de-add8-10b2af75a06d"
    83568356     wsmap="managed"
    83578357     >
     
    84508450         <desc>Total amount of space in the page file</desc>
    84518451      </param>
     8452      <param name="memAllocTotal" type="unsigned long" dir="out">
     8453         <desc>Total amount of memory allocated by the hypervisor</desc>
     8454      </param>
    84528455      <param name="memFreeTotal" type="unsigned long" dir="out">
    8453          <desc>Total amount of free memory available in VMMR0</desc>
     8456         <desc>Total amount of free memory available in the hypervisor</desc>
     8457      </param>
     8458      <param name="memBalloonTotal" type="unsigned long" dir="out">
     8459         <desc>Total amount of memory ballooned by the hypervisor</desc>
    84548460      </param>
    84558461    </method>
  • trunk/src/VBox/Main/include/GuestImpl.h

    r28032 r28036  
    9090    STDMETHOD(InternalGetStatistics)(ULONG *aCpuUser, ULONG *aCpuKernel, ULONG *aCpuIdle,
    9191                                     ULONG *aMemTotal, ULONG *aMemFree, ULONG *aMemBalloon, ULONG *aMemCache,
    92                                      ULONG *aPageTotal, ULONG *aMemFreeTotal);
     92                                     ULONG *aPageTotal, ULONG *aMemAllocTotal, ULONG *aMemFreeTotal, ULONG *aMemBalloonTotal);
    9393
    9494    // public methods that are not in IDL
  • trunk/src/VBox/Main/include/Performance.h

    r28012 r28036  
    139139    {
    140140    public:
    141                  CollectorHAL() : mMemFreeTotal(0) {};
     141                 CollectorHAL() : mMemAllocVMM(0), mMemFreeVMM(0), mMemBalloonedVMM(0) {};
    142142        virtual ~CollectorHAL() { };
    143143        virtual int preCollect(const CollectorHints& /* hints */, uint64_t /* iTick */) { return VINF_SUCCESS; }
     
    163163        virtual int disable();
    164164
    165         virtual int setMemFreeTotal(ULONG memfree)
    166         {
    167             mMemFreeTotal = memfree;
     165        virtual int setMemHypervisorStats(ULONG memAlloc, ULONG memFree, ULONG memBallooned)
     166        {
     167            mMemAllocVMM     = memAlloc;
     168            mMemFreeVMM      = memFree;
     169            mMemBalloonedVMM = memBallooned;
    168170            return S_OK;
    169171        }
    170172
    171         virtual ULONG getMemFreeTotal()
    172         {
    173             return mMemFreeTotal;
    174         }
    175 
    176     private:
    177         ULONG       mMemFreeTotal;
     173        virtual void getMemHypervisorStats(ULONG *pMemAlloc, ULONG *pMemFree, ULONG *pMemBallooned)
     174        {
     175            *pMemAlloc     = mMemAllocVMM;
     176            *pMemFree      = mMemFreeVMM;
     177            *pMemBallooned = mMemBalloonedVMM;
     178        }
     179
     180    private:
     181        ULONG       mMemAllocVMM;
     182        ULONG       mMemFreeVMM;
     183        ULONG       mMemBalloonedVMM;
    178184    };
    179185
     
    201207        }
    202208
    203         /** Return guest memory information in kb. */
     209        /** Return guest memory information in MB. */
    204210        void getGuestMemLoad(ULONG *pulMemTotal, ULONG *pulMemFree, ULONG *pulMemBalloon, ULONG *pulMemCache, ULONG *pulPageTotal)
    205211        {
     
    335341    {
    336342    public:
    337         HostRamUsage(CollectorHAL *hal, ComPtr<IUnknown> object, SubMetric *total, SubMetric *used, SubMetric *available)
    338         : BaseMetric(hal, "RAM/Usage", object), mTotal(total), mUsed(used), mAvailable(available) {};
    339         ~HostRamUsage() { delete mTotal; delete mUsed; delete mAvailable; };
     343        HostRamUsage(CollectorHAL *hal, ComPtr<IUnknown> object, SubMetric *total, SubMetric *used, SubMetric *available, SubMetric *allocVMM, SubMetric *freeVMM, SubMetric *balloonVMM)
     344        : BaseMetric(hal, "RAM/Usage", object), mTotal(total), mUsed(used), mAvailable(available), mAllocVMM(allocVMM), mFreeVMM(freeVMM), mBalloonVMM(balloonVMM) {};
     345        ~HostRamUsage() { delete mTotal; delete mUsed; delete mAvailable; delete mAllocVMM; delete mFreeVMM; delete mBalloonVMM; };
    340346
    341347        void init(ULONG period, ULONG length);
     
    350356        SubMetric *mUsed;
    351357        SubMetric *mAvailable;
     358        SubMetric *mAllocVMM;
     359        SubMetric *mFreeVMM;
     360        SubMetric *mBalloonVMM;
    352361    };
    353362
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