VirtualBox

Changeset 43908 in vbox for trunk/src/VBox/Main/src-server


Ignore:
Timestamp:
Nov 19, 2012 5:36:43 AM (12 years ago)
Author:
vboxsync
Message:

Main/Metrics: VM network rate metrics (#6345)

Location:
trunk/src/VBox/Main/src-server
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/src-server/MachineImpl.cpp

    r43900 r43908  
    1151211512    pm::SubMetric *ramUsageUsed  = new pm::SubMetric("RAM/Usage/Used",
    1151311513        "Size of resident portion of VM process in memory.");
     11514    pm::SubMetric *machineNetRx = new pm::SubMetric("Net/Rate/Rx",
     11515        "Network receive rate.");
     11516    pm::SubMetric *machineNetTx = new pm::SubMetric("Net/Rate/Tx",
     11517        "Network transmit rate.");
    1151411518    /* Create and register base metrics */
    1151511519    pm::BaseMetric *cpuLoad = new pm::MachineCpuLoadRaw(hal, aMachine, pid,
     
    1156811572
    1156911573    /* Create and register base metrics */
     11574    pm::BaseMetric *machineNetRate = new pm::MachineNetRate(mCollectorGuest, aMachine,
     11575                                                            machineNetRx, machineNetTx);
     11576    aCollector->registerBaseMetric(machineNetRate);
     11577
    1157011578    pm::BaseMetric *guestCpuLoad = new pm::GuestCpuLoad(mCollectorGuest, aMachine,
    1157111579                                                        guestLoadUser, guestLoadKernel, guestLoadIdle);
     
    1157711585                                                        guestMemCache, guestPagedTotal);
    1157811586    aCollector->registerBaseMetric(guestCpuMem);
     11587
     11588    aCollector->registerMetric(new pm::Metric(machineNetRate, machineNetRx, 0));
     11589    aCollector->registerMetric(new pm::Metric(machineNetRate, machineNetRx, new pm::AggregateAvg()));
     11590    aCollector->registerMetric(new pm::Metric(machineNetRate, machineNetRx, new pm::AggregateMin()));
     11591    aCollector->registerMetric(new pm::Metric(machineNetRate, machineNetRx, new pm::AggregateMax()));
     11592
     11593    aCollector->registerMetric(new pm::Metric(machineNetRate, machineNetTx, 0));
     11594    aCollector->registerMetric(new pm::Metric(machineNetRate, machineNetTx, new pm::AggregateAvg()));
     11595    aCollector->registerMetric(new pm::Metric(machineNetRate, machineNetTx, new pm::AggregateMin()));
     11596    aCollector->registerMetric(new pm::Metric(machineNetRate, machineNetTx, new pm::AggregateMax()));
    1157911597
    1158011598    aCollector->registerMetric(new pm::Metric(guestCpuLoad, guestLoadUser, 0));
     
    1214912167 *  Passes collected guest statistics to performance collector object
    1215012168 */
    12151 STDMETHODIMP SessionMachine::ReportGuestStatistics(ULONG aValidStats, ULONG aCpuUser,
    12152                                                    ULONG aCpuKernel, ULONG aCpuIdle,
    12153                                                    ULONG aMemTotal, ULONG aMemFree,
    12154                                                    ULONG aMemBalloon, ULONG aMemShared,
    12155                                                    ULONG aMemCache, ULONG aPageTotal,
    12156                                                    ULONG aAllocVMM, ULONG aFreeVMM,
    12157                                                    ULONG aBalloonedVMM, ULONG aSharedVMM)
     12169STDMETHODIMP SessionMachine::ReportVmStatistics(ULONG aValidStats, ULONG aCpuUser,
     12170                                                ULONG aCpuKernel, ULONG aCpuIdle,
     12171                                                ULONG aMemTotal, ULONG aMemFree,
     12172                                                ULONG aMemBalloon, ULONG aMemShared,
     12173                                                ULONG aMemCache, ULONG aPageTotal,
     12174                                                ULONG aAllocVMM, ULONG aFreeVMM,
     12175                                                ULONG aBalloonedVMM, ULONG aSharedVMM,
     12176                                                ULONG aVmNetRx, ULONG aVmNetTx)
    1215812177{
    1215912178    if (mCollectorGuest)
     
    1216112180                                     aMemTotal, aMemFree, aMemBalloon, aMemShared,
    1216212181                                     aMemCache, aPageTotal, aAllocVMM, aFreeVMM,
    12163                                      aBalloonedVMM, aSharedVMM);
     12182                                     aBalloonedVMM, aSharedVMM, aVmNetRx, aVmNetTx);
    1216412183
    1216512184    return S_OK;
  • trunk/src/VBox/Main/src-server/Performance.cpp

    r43831 r43908  
    223223    mCpuUser(0), mCpuKernel(0), mCpuIdle(0),
    224224    mMemTotal(0), mMemFree(0), mMemBalloon(0), mMemShared(0), mMemCache(0), mPageTotal(0),
    225     mAllocVMM(0), mFreeVMM(0), mBalloonedVMM(0), mSharedVMM(0)
     225    mAllocVMM(0), mFreeVMM(0), mBalloonedVMM(0), mSharedVMM(0), mVmNetRx(0), mVmNetTx(0)
    226226{
    227227    Assert(mMachine);
     
    312312        }
    313313    }
    314     if ((mask & GUESTSTATS_VMMRAM) == GUESTSTATS_VMMRAM)
     314    if ((mask & VMSTATS_VMM_RAM) == VMSTATS_VMM_RAM)
    315315        enableVMMStats(true);
    316316    mEnabled |= mask;
     
    324324        return E_UNEXPECTED;
    325325
    326     if ((mask & GUESTSTATS_VMMRAM) == GUESTSTATS_VMMRAM)
     326    if ((mask & VMSTATS_VMM_RAM) == VMSTATS_VMM_RAM)
    327327        enableVMMStats(false);
    328328    mEnabled &= ~mask;
     
    334334        LogAleksey(("{%p} " LOG_FN_FMT ": Set guest statistics update interval to 0 sec (%s)\n",
    335335                    this, __PRETTY_FUNCTION__, SUCCEEDED(ret)?"success":"failed"));
    336         invalidate(GUESTSTATS_ALL);
     336        invalidate(VMSTATS_ALL);
    337337    }
    338338
     
    359359                                 ULONG aMemCache, ULONG aPageTotal,
    360360                                 ULONG aAllocVMM, ULONG aFreeVMM,
    361                                  ULONG aBalloonedVMM, ULONG aSharedVMM)
    362 {
    363     if ((aValidStats & GUESTSTATS_CPULOAD) == GUESTSTATS_CPULOAD)
     361                                 ULONG aBalloonedVMM, ULONG aSharedVMM,
     362                                 ULONG aVmNetRx, ULONG aVmNetTx)
     363{
     364    if ((aValidStats & VMSTATS_GUEST_CPULOAD) == VMSTATS_GUEST_CPULOAD)
    364365    {
    365366        mCpuUser   = aCpuUser;
     
    367368        mCpuIdle   = aCpuIdle;
    368369    }
    369     if ((aValidStats & GUESTSTATS_RAMUSAGE) == GUESTSTATS_RAMUSAGE)
     370    if ((aValidStats & VMSTATS_GUEST_RAMUSAGE) == VMSTATS_GUEST_RAMUSAGE)
    370371    {
    371372        mMemTotal   = aMemTotal;
     
    376377        mPageTotal  = aPageTotal;
    377378    }
    378     if ((aValidStats & GUESTSTATS_VMMRAM) == GUESTSTATS_VMMRAM)
     379    if ((aValidStats & VMSTATS_VMM_RAM) == VMSTATS_VMM_RAM)
    379380    {
    380381        mAllocVMM     = aAllocVMM;
     
    382383        mBalloonedVMM = aBalloonedVMM;
    383384        mSharedVMM    = aSharedVMM;
     385    }
     386    if ((aValidStats & VMSTATS_NET_RATE) == VMSTATS_NET_RATE)
     387    {
     388        mVmNetRx = aVmNetRx;
     389        mVmNetTx = aVmNetTx;
    384390    }
    385391    mValid = aValidStats;
     
    452458                /* Found the guest already collecting stats, elect it */
    453459                mVMMStatsProvider = *it;
    454                 rc = mVMMStatsProvider->enqueueRequest(new CGRQEnable(GUESTSTATS_VMMRAM));
     460                rc = mVMMStatsProvider->enqueueRequest(new CGRQEnable(VMSTATS_VMM_RAM));
    455461                if (FAILED(rc))
    456462                {
     
    472478
    473479                mVMMStatsProvider = *it;
    474                 //mVMMStatsProvider->enable(GUESTSTATS_VMMRAM);
    475                 rc = mVMMStatsProvider->enqueueRequest(new CGRQEnable(GUESTSTATS_VMMRAM));
     480                //mVMMStatsProvider->enable(VMSTATS_VMM_RAM);
     481                rc = mVMMStatsProvider->enqueueRequest(new CGRQEnable(VMSTATS_VMM_RAM));
    476482                if (SUCCEEDED(rc))
    477483                    break;
     
    671677    mRx->init(mLength);
    672678    mTx->init(mLength);
    673     int rc = mHAL->getRawHostNetworkLoad(mShortName.c_str(), &mRxPrev, &mTxPrev);
     679    /*int rc =*/ mHAL->getRawHostNetworkLoad(mShortName.c_str(), &mRxPrev, &mTxPrev);
    674680    //AssertRC(rc);
    675681}
     
    867873    CollectorGuest *provider = mCollectorGuestManager->getVMMStatsProvider();
    868874    if (provider)
    869         rc = provider->enable(GUESTSTATS_VMMRAM);
     875        rc = provider->enable(VMSTATS_VMM_RAM);
    870876    BaseMetric::enable();
    871877    return rc;
     
    878884    CollectorGuest *provider = mCollectorGuestManager->getVMMStatsProvider();
    879885    if (provider)
    880         rc = provider->disable(GUESTSTATS_VMMRAM);
     886        rc = provider->disable(VMSTATS_VMM_RAM);
    881887    return rc;
    882888}
     
    894900        LogAleksey(("{%p} " LOG_FN_FMT ": provider=%p enabled=%s valid=%s...\n",
    895901                    this, __PRETTY_FUNCTION__, provider, provider->isEnabled()?"y":"n",
    896                     provider->isValid(GUESTSTATS_VMMRAM)?"y":"n"));
    897         if (provider->isValid(GUESTSTATS_VMMRAM))
     902                    provider->isValid(VMSTATS_VMM_RAM)?"y":"n"));
     903        if (provider->isValid(VMSTATS_VMM_RAM))
    898904        {
    899905            /* Provider is ready, get updated stats */
     
    902908            mBalloonedCurrent = provider->getBalloonedVMM();
    903909            mSharedCurrent    = provider->getSharedVMM();
    904             provider->invalidate(GUESTSTATS_VMMRAM);
     910            provider->invalidate(VMSTATS_VMM_RAM);
    905911        }
    906912        /*
     
    10001006
    10011007#ifndef VBOX_COLLECTOR_TEST_CASE
     1008void MachineNetRate::init(ULONG period, ULONG length)
     1009{
     1010    mPeriod = period;
     1011    mLength = length;
     1012
     1013    mRx->init(mLength);
     1014    mTx->init(mLength);
     1015}
     1016
     1017void MachineNetRate::collect()
     1018{
     1019    if (mCGuest->isValid(VMSTATS_NET_RATE))
     1020    {
     1021        mRx->put(mCGuest->getVmNetRx());
     1022        mTx->put(mCGuest->getVmNetTx());
     1023        mCGuest->invalidate(VMSTATS_NET_RATE);
     1024    }
     1025}
     1026
     1027int MachineNetRate::enable()
     1028{
     1029    int rc = mCGuest->enable(VMSTATS_NET_RATE);
     1030    BaseMetric::enable();
     1031    return rc;
     1032}
     1033
     1034int MachineNetRate::disable()
     1035{
     1036    BaseMetric::disable();
     1037    return mCGuest->disable(VMSTATS_NET_RATE);
     1038}
     1039
     1040void MachineNetRate::preCollect(CollectorHints& hints,  uint64_t /* iTick */)
     1041{
     1042    hints.collectGuestStats(mCGuest->getProcess());
     1043}
     1044
    10021045void GuestCpuLoad::init(ULONG period, ULONG length)
    10031046{
     
    10171060void GuestCpuLoad::collect()
    10181061{
    1019     if (mCGuest->isValid(GUESTSTATS_CPULOAD))
     1062    if (mCGuest->isValid(VMSTATS_GUEST_CPULOAD))
    10201063    {
    10211064        mUser->put((ULONG)(PM_CPU_LOAD_MULTIPLIER * mCGuest->getCpuUser()) / 100);
    10221065        mKernel->put((ULONG)(PM_CPU_LOAD_MULTIPLIER * mCGuest->getCpuKernel()) / 100);
    10231066        mIdle->put((ULONG)(PM_CPU_LOAD_MULTIPLIER * mCGuest->getCpuIdle()) / 100);
    1024         mCGuest->invalidate(GUESTSTATS_CPULOAD);
     1067        mCGuest->invalidate(VMSTATS_GUEST_CPULOAD);
    10251068    }
    10261069}
     
    10281071int GuestCpuLoad::enable()
    10291072{
    1030     int rc = mCGuest->enable(GUESTSTATS_CPULOAD);
     1073    int rc = mCGuest->enable(VMSTATS_GUEST_CPULOAD);
    10311074    BaseMetric::enable();
    10321075    return rc;
     
    10361079{
    10371080    BaseMetric::disable();
    1038     return mCGuest->disable(GUESTSTATS_CPULOAD);
     1081    return mCGuest->disable(VMSTATS_GUEST_CPULOAD);
    10391082}
    10401083
     
    10541097void GuestRamUsage::collect()
    10551098{
    1056     if (mCGuest->isValid(GUESTSTATS_RAMUSAGE))
     1099    if (mCGuest->isValid(VMSTATS_GUEST_RAMUSAGE))
    10571100    {
    10581101        mTotal->put(mCGuest->getMemTotal());
     
    10621105        mCache->put(mCGuest->getMemCache());
    10631106        mPagedTotal->put(mCGuest->getPageTotal());
    1064         mCGuest->invalidate(GUESTSTATS_RAMUSAGE);
     1107        mCGuest->invalidate(VMSTATS_GUEST_RAMUSAGE);
    10651108    }
    10661109}
     
    10681111int GuestRamUsage::enable()
    10691112{
    1070     int rc = mCGuest->enable(GUESTSTATS_RAMUSAGE);
     1113    int rc = mCGuest->enable(VMSTATS_GUEST_RAMUSAGE);
    10711114    BaseMetric::enable();
    10721115    return rc;
     
    10761119{
    10771120    BaseMetric::disable();
    1078     return mCGuest->disable(GUESTSTATS_RAMUSAGE);
     1121    return mCGuest->disable(VMSTATS_GUEST_RAMUSAGE);
    10791122}
    10801123
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette