VirtualBox

Changeset 43908 in vbox for trunk/src/VBox/Main/include


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/include
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/include/ConsoleImpl.h

    r43584 r43908  
    239239
    240240    void processRemoteUSBDevices(uint32_t u32ClientId, VRDEUSBDEVICEDESC *pDevList, uint32_t cbDevList, bool fDescExt);
    241     void reportGuestStatistics(ULONG aValidStats, ULONG aCpuUser,
     241    void reportVmStatistics(ULONG aValidStats, ULONG aCpuUser,
    242242                               ULONG aCpuKernel, ULONG aCpuIdle,
    243243                               ULONG aMemTotal, ULONG aMemFree,
     
    245245                               ULONG aMemCache, ULONG aPageTotal,
    246246                               ULONG aAllocVMM, ULONG aFreeVMM,
    247                                ULONG aBalloonedVMM, ULONG aSharedVMM)
     247                               ULONG aBalloonedVMM, ULONG aSharedVMM,
     248                               ULONG aVmNetRx, ULONG aVmNetTx)
    248249    {
    249         mControl->ReportGuestStatistics(aValidStats, aCpuUser, aCpuKernel, aCpuIdle,
    250                                         aMemTotal, aMemFree, aMemBalloon, aMemShared,
    251                                         aMemCache, aPageTotal, aAllocVMM, aFreeVMM,
    252                                         aBalloonedVMM, aSharedVMM);
     250        mControl->ReportVmStatistics(aValidStats, aCpuUser, aCpuKernel, aCpuIdle,
     251                                     aMemTotal, aMemFree, aMemBalloon, aMemShared,
     252                                     aMemCache, aPageTotal, aAllocVMM, aFreeVMM,
     253                                     aBalloonedVMM, aSharedVMM, aVmNetRx, aVmNetTx);
    253254    }
    254255    void enableVMMStatistics(BOOL aEnable);
  • trunk/src/VBox/Main/include/GuestImpl.h

    r42897 r43908  
    2222#include <iprt/time.h>
    2323#include <VBox/ostypes.h>
     24#include <VBox/vmm/stam.h>
    2425
    2526#include "AdditionsFacilityImpl.h"
     
    150151     * @{ */
    151152    void updateStats(uint64_t iTick);
     153    static int staticEnumStatsCallback(const char *pszName, STAMTYPE enmType, void *pvSample, STAMUNIT enmUnit,
     154                                       STAMVISIBILITY enmVisiblity, const char *pszDesc, void *pvUser);
    152155    /** @}  */
    153156
     
    179182    ULONG             mMemoryBalloonSize;
    180183    ULONG             mStatUpdateInterval;
     184    uint64_t          mNetStatRx;
     185    uint64_t          mNetStatTx;
     186    uint64_t          mNetStatLastTs;
    181187    ULONG             mCurrentGuestStat[GUESTSTATTYPE_MAX];
    182     ULONG             mGuestValidStats;
     188    ULONG             mVmValidStats;
    183189    BOOL              mCollectVMMStats;
    184190    BOOL              mfPageFusionEnabled;
  • trunk/src/VBox/Main/include/MachineImpl.h

    r43870 r43908  
    10691069    STDMETHOD(EjectMedium)(IMediumAttachment *aAttachment,
    10701070                           IMediumAttachment **aNewAttachment);
    1071     STDMETHOD(ReportGuestStatistics)(ULONG aValidStats, ULONG aCpuUser,
    1072                                      ULONG aCpuKernel, ULONG aCpuIdle,
    1073                                      ULONG aMemTotal, ULONG aMemFree,
    1074                                      ULONG aMemBalloon, ULONG aMemShared,
    1075                                      ULONG aMemCache, ULONG aPageTotal,
    1076                                      ULONG aAllocVMM, ULONG aFreeVMM,
    1077                                      ULONG aBalloonedVMM, ULONG aSharedVMM);
     1071    STDMETHOD(ReportVmStatistics)(ULONG aValidStats, ULONG aCpuUser,
     1072                                  ULONG aCpuKernel, ULONG aCpuIdle,
     1073                                  ULONG aMemTotal, ULONG aMemFree,
     1074                                  ULONG aMemBalloon, ULONG aMemShared,
     1075                                  ULONG aMemCache, ULONG aPageTotal,
     1076                                  ULONG aAllocVMM, ULONG aFreeVMM,
     1077                                  ULONG aBalloonedVMM, ULONG aSharedVMM,
     1078                                  ULONG aVmNetRx, ULONG aVmNetTx);
    10781079
    10791080    // public methods only for internal purposes
  • trunk/src/VBox/Main/include/Performance.h

    r43831 r43908  
    154154    typedef enum
    155155    {
    156         GUESTSTATMASK_NONE       = 0x00000000,
    157         GUESTSTATMASK_CPUUSER    = 0x00000001,
    158         GUESTSTATMASK_CPUKERNEL  = 0x00000002,
    159         GUESTSTATMASK_CPUIDLE    = 0x00000004,
    160         GUESTSTATMASK_MEMTOTAL   = 0x00000008,
    161         GUESTSTATMASK_MEMFREE    = 0x00000010,
    162         GUESTSTATMASK_MEMBALLOON = 0x00000020,
    163         GUESTSTATMASK_MEMSHARED  = 0x00000040,
    164         GUESTSTATMASK_MEMCACHE   = 0x00000080,
    165         GUESTSTATMASK_PAGETOTAL  = 0x00000100,
    166         GUESTSTATMASK_ALLOCVMM   = 0x00000200,
    167         GUESTSTATMASK_FREEVMM    = 0x00000400,
    168         GUESTSTATMASK_BALOONVMM  = 0x00000800,
    169         GUESTSTATMASK_SHAREDVMM  = 0x00001000
    170     } GUESTSTATMASK;
    171 
    172     const ULONG GUESTSTATS_CPULOAD =
    173         GUESTSTATMASK_CPUUSER|GUESTSTATMASK_CPUKERNEL|GUESTSTATMASK_CPUIDLE;
    174     const ULONG GUESTSTATS_RAMUSAGE =
    175         GUESTSTATMASK_MEMTOTAL|GUESTSTATMASK_MEMFREE|GUESTSTATMASK_MEMBALLOON|
    176         GUESTSTATMASK_MEMSHARED|GUESTSTATMASK_MEMCACHE|
    177         GUESTSTATMASK_PAGETOTAL;
    178     const ULONG GUESTSTATS_VMMRAM =
    179         GUESTSTATMASK_ALLOCVMM|GUESTSTATMASK_FREEVMM|
    180         GUESTSTATMASK_BALOONVMM|GUESTSTATMASK_SHAREDVMM;
    181     const ULONG GUESTSTATS_ALL = GUESTSTATS_CPULOAD|GUESTSTATS_RAMUSAGE|GUESTSTATS_VMMRAM;
    182 
     156        VMSTATMASK_NONE             = 0x00000000,
     157        VMSTATMASK_GUEST_CPUUSER    = 0x00000001,
     158        VMSTATMASK_GUEST_CPUKERNEL  = 0x00000002,
     159        VMSTATMASK_GUEST_CPUIDLE    = 0x00000004,
     160        VMSTATMASK_GUEST_MEMTOTAL   = 0x00000008,
     161        VMSTATMASK_GUEST_MEMFREE    = 0x00000010,
     162        VMSTATMASK_GUEST_MEMBALLOON = 0x00000020,
     163        VMSTATMASK_GUEST_MEMSHARED  = 0x00000040,
     164        VMSTATMASK_GUEST_MEMCACHE   = 0x00000080,
     165        VMSTATMASK_GUEST_PAGETOTAL  = 0x00000100,
     166        VMSTATMASK_VMM_ALLOC        = 0x00010000,
     167        VMSTATMASK_VMM_FREE         = 0x00020000,
     168        VMSTATMASK_VMM_BALOON       = 0x00040000,
     169        VMSTATMASK_VMM_SHARED       = 0x00080000,
     170        VMSTATMASK_NET_RX           = 0x01000000,
     171        VMSTATMASK_NET_TX           = 0x02000000
     172    } VMSTATMASK;
     173
     174    const ULONG VMSTATS_GUEST_CPULOAD =
     175        VMSTATMASK_GUEST_CPUUSER    | VMSTATMASK_GUEST_CPUKERNEL |
     176        VMSTATMASK_GUEST_CPUIDLE;
     177    const ULONG VMSTATS_GUEST_RAMUSAGE =
     178        VMSTATMASK_GUEST_MEMTOTAL   | VMSTATMASK_GUEST_MEMFREE |
     179        VMSTATMASK_GUEST_MEMBALLOON | VMSTATMASK_GUEST_MEMSHARED |
     180        VMSTATMASK_GUEST_MEMCACHE   | VMSTATMASK_GUEST_PAGETOTAL;
     181    const ULONG VMSTATS_VMM_RAM =
     182        VMSTATMASK_VMM_ALLOC        | VMSTATMASK_VMM_FREE|
     183        VMSTATMASK_VMM_BALOON       | VMSTATMASK_VMM_SHARED;
     184    const ULONG VMSTATS_NET_RATE =
     185        VMSTATMASK_NET_RX           | VMSTATMASK_NET_TX;
     186    const ULONG VMSTATS_ALL =
     187        VMSTATS_GUEST_CPULOAD       | VMSTATS_GUEST_RAMUSAGE |
     188        VMSTATS_VMM_RAM             | VMSTATS_NET_RATE;
    183189    class CollectorGuest;
    184190
     
    266272                         ULONG aMemCache, ULONG aPageTotal,
    267273                         ULONG aAllocVMM, ULONG aFreeVMM,
    268                          ULONG aBalloonedVMM, ULONG aSharedVMM);
     274                         ULONG aBalloonedVMM, ULONG aSharedVMM,
     275                         ULONG aVmNetRx, ULONG aVmNetTx);
    269276        int enable(ULONG mask);
    270277        int disable(ULONG mask);
     
    290297        ULONG getBalloonedVMM() { return mBalloonedVMM; };
    291298        ULONG getSharedVMM()    { return mSharedVMM; };
     299        ULONG getVmNetRx()      { return mVmNetRx; };
     300        ULONG getVmNetTx()      { return mVmNetTx; };
    292301
    293302    private:
     
    317326        ULONG                mBalloonedVMM;
    318327        ULONG                mSharedVMM;
     328        ULONG                mVmNetRx;
     329        ULONG                mVmNetTx;
    319330    };
    320331
     
    663674
    664675#ifndef VBOX_COLLECTOR_TEST_CASE
     676    /*
     677     * Although MachineNetRate is measured for VM, not for the guest, it is
     678     * derived from BaseGuestMetric since it uses the same mechanism for
     679     * data collection -- values get pushed by Guest class along with other
     680     * guest statistics.
     681     */
     682    class MachineNetRate : public BaseGuestMetric
     683    {
     684    public:
     685        MachineNetRate(CollectorGuest *cguest, ComPtr<IUnknown> object, SubMetric *rx, SubMetric *tx)
     686            : BaseGuestMetric(cguest, "Net/Rate", object), mRx(rx), mTx(tx) {};
     687        ~MachineNetRate() { delete mRx; delete mTx; };
     688
     689        void init(ULONG period, ULONG length);
     690        void preCollect(CollectorHints& hints, uint64_t iTick);
     691        void collect();
     692        int enable();
     693        int disable();
     694        const char *getUnit() { return "B/s"; };
     695        ULONG getMinValue() { return 0; };
     696        ULONG getMaxValue() { return INT32_MAX; };
     697        ULONG getScale() { return 1; }
     698    private:
     699        SubMetric *mRx, *mTx;
     700    };
     701
    665702    class GuestCpuLoad : public BaseGuestMetric
    666703    {
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