VirtualBox

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


Ignore:
Timestamp:
Mar 31, 2010 1:33:57 PM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
59584
Message:

Metrics updates

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

Legend:

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

    r27885 r27896  
    8888
    8989    mStatUpdateInterval = 0;                    /* Default is not to report guest statistics at all */
     90
     91    /* Clear statistics. */
     92    for (unsigned i = 0 ; i < GUESTSTATTYPE_MAX; i++)
     93        mCurrentGuestStat[i] = 0;
     94
    9095    return S_OK;
    9196}
     
    251256                                          ULONG *aPageTotal, ULONG *aPageFree)
    252257{
    253     return S_OK;
    254 }
    255 
     258    CheckComArgOutPointerValid(aCpuUser);
     259    CheckComArgOutPointerValid(aCpuKernel);
     260    CheckComArgOutPointerValid(aCpuIdle);
     261    CheckComArgOutPointerValid(aMemTotal);
     262    CheckComArgOutPointerValid(aMemFree);
     263    CheckComArgOutPointerValid(aMemBalloon);
     264    CheckComArgOutPointerValid(aMemCache);
     265    CheckComArgOutPointerValid(aPageTotal);
     266    CheckComArgOutPointerValid(aPageFree);
     267
     268    AutoCaller autoCaller(this);
     269    if (FAILED(autoCaller.rc())) return autoCaller.rc();
     270
     271    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
     272
     273    *aCpuUser = mCurrentGuestStat[GUESTSTATTYPE_CPUUSER];
     274    *aCpuKernel = mCurrentGuestStat[GUESTSTATTYPE_CPUKERNEL];
     275    *aCpuIdle = mCurrentGuestStat[GUESTSTATTYPE_CPUIDLE];
     276    *aMemTotal = mCurrentGuestStat[GUESTSTATTYPE_MEMTOTAL];
     277    *aMemFree = mCurrentGuestStat[GUESTSTATTYPE_MEMFREE];
     278    *aMemBalloon = mCurrentGuestStat[GUESTSTATTYPE_MEMBALLOON];
     279    *aMemCache = mCurrentGuestStat[GUESTSTATTYPE_MEMCACHE];
     280    *aPageTotal = mCurrentGuestStat[GUESTSTATTYPE_PAGETOTAL];
     281    *aPageFree = mCurrentGuestStat[GUESTSTATTYPE_PAGEFREE];
     282
     283    return S_OK;
     284}
     285
     286HRESULT Guest::SetStatistic(ULONG aCpuId, GUESTSTATTYPE enmType, ULONG aVal)
     287{
     288    AutoCaller autoCaller(this);
     289    if (FAILED(autoCaller.rc())) return autoCaller.rc();
     290
     291    AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
     292
     293    if (enmType > GUESTSTATTYPE_MAX)
     294        return E_INVALIDARG;
     295
     296    mCurrentGuestStat[enmType] = aVal;
     297    return S_OK;
     298}
    256299
    257300STDMETHODIMP Guest::SetCredentials(IN_BSTR aUserName, IN_BSTR aPassword,
  • trunk/src/VBox/Main/VMMDevInterface.cpp

    r27885 r27896  
    458458        return VERR_INVALID_PARAMETER; /** @todo wrong error */
    459459
    460 #if 0
    461460    if (pGuestStats->u32StatCaps & VBOX_GUEST_STAT_CPU_LOAD_IDLE)
    462         guest->SetStatistic(pGuestStats->u32CpuId, GuestStatisticType_CPULoad_Idle, pGuestStats->u32CpuLoad_Idle);
     461        guest->SetStatistic(pGuestStats->u32CpuId, GUESTSTATTYPE_CPUIDLE, pGuestStats->u32CpuLoad_Idle);
    463462
    464463    if (pGuestStats->u32StatCaps & VBOX_GUEST_STAT_CPU_LOAD_KERNEL)
    465         guest->SetStatistic(pGuestStats->u32CpuId, GuestStatisticType_CPULoad_Kernel, pGuestStats->u32CpuLoad_Kernel);
     464        guest->SetStatistic(pGuestStats->u32CpuId, GUESTSTATTYPE_CPUKERNEL, pGuestStats->u32CpuLoad_Kernel);
    466465
    467466    if (pGuestStats->u32StatCaps & VBOX_GUEST_STAT_CPU_LOAD_USER)
    468         guest->SetStatistic(pGuestStats->u32CpuId, GuestStatisticType_CPULoad_User, pGuestStats->u32CpuLoad_User);
    469 
    470     if (pGuestStats->u32StatCaps & VBOX_GUEST_STAT_THREADS)
    471         guest->SetStatistic(pGuestStats->u32CpuId, GuestStatisticType_Threads, pGuestStats->u32Threads);
    472 
    473     if (pGuestStats->u32StatCaps & VBOX_GUEST_STAT_PROCESSES)
    474         guest->SetStatistic(pGuestStats->u32CpuId, GuestStatisticType_Processes, pGuestStats->u32Processes);
    475 
    476     if (pGuestStats->u32StatCaps & VBOX_GUEST_STAT_HANDLES)
    477         guest->SetStatistic(pGuestStats->u32CpuId, GuestStatisticType_Handles, pGuestStats->u32Handles);
    478 
    479     if (pGuestStats->u32StatCaps & VBOX_GUEST_STAT_MEMORY_LOAD)
    480         guest->SetStatistic(pGuestStats->u32CpuId, GuestStatisticType_MemoryLoad, pGuestStats->u32MemoryLoad);
     467        guest->SetStatistic(pGuestStats->u32CpuId, GUESTSTATTYPE_CPUUSER, pGuestStats->u32CpuLoad_User);
     468
    481469
    482470    /* Note that reported values are in pages; upper layers expect them in megabytes */
     
    486474
    487475    if (pGuestStats->u32StatCaps & VBOX_GUEST_STAT_PHYS_MEM_TOTAL)
    488         guest->SetStatistic(pGuestStats->u32CpuId, GuestStatisticType_PhysMemTotal, (pGuestStats->u32PhysMemTotal + (_1M/pGuestStats->u32PageSize)-1) / (_1M/pGuestStats->u32PageSize));
     476        guest->SetStatistic(pGuestStats->u32CpuId, GUESTSTATTYPE_MEMTOTAL, (pGuestStats->u32PhysMemTotal + (_1M/pGuestStats->u32PageSize)-1) / (_1M/pGuestStats->u32PageSize));
    489477
    490478    if (pGuestStats->u32StatCaps & VBOX_GUEST_STAT_PHYS_MEM_AVAIL)
    491         guest->SetStatistic(pGuestStats->u32CpuId, GuestStatisticType_PhysMemAvailable, pGuestStats->u32PhysMemAvail / (_1M/pGuestStats->u32PageSize));
     479        guest->SetStatistic(pGuestStats->u32CpuId, GUESTSTATTYPE_MEMFREE, pGuestStats->u32PhysMemAvail / (_1M/pGuestStats->u32PageSize));
    492480
    493481    if (pGuestStats->u32StatCaps & VBOX_GUEST_STAT_PHYS_MEM_BALLOON)
    494         guest->SetStatistic(pGuestStats->u32CpuId, GuestStatisticType_PhysMemBalloon, pGuestStats->u32PhysMemBalloon / (_1M/pGuestStats->u32PageSize));
    495 
    496     if (pGuestStats->u32StatCaps & VBOX_GUEST_STAT_MEM_COMMIT_TOTAL)
    497         guest->SetStatistic(pGuestStats->u32CpuId, GuestStatisticType_MemCommitTotal, pGuestStats->u32MemCommitTotal / (_1M/pGuestStats->u32PageSize));
    498 
    499     if (pGuestStats->u32StatCaps & VBOX_GUEST_STAT_MEM_KERNEL_TOTAL)
    500         guest->SetStatistic(pGuestStats->u32CpuId, GuestStatisticType_MemKernelTotal, pGuestStats->u32MemKernelTotal / (_1M/pGuestStats->u32PageSize));
    501 
    502     if (pGuestStats->u32StatCaps & VBOX_GUEST_STAT_MEM_KERNEL_PAGED)
    503         guest->SetStatistic(pGuestStats->u32CpuId, GuestStatisticType_MemKernelPaged, pGuestStats->u32MemKernelPaged / (_1M/pGuestStats->u32PageSize));
    504 
    505     if (pGuestStats->u32StatCaps & VBOX_GUEST_STAT_MEM_KERNEL_NONPAGED)
    506         guest->SetStatistic(pGuestStats->u32CpuId, GuestStatisticType_MemKernelNonpaged, pGuestStats->u32MemKernelNonPaged / (_1M/pGuestStats->u32PageSize));
     482        guest->SetStatistic(pGuestStats->u32CpuId, GUESTSTATTYPE_MEMBALLOON, pGuestStats->u32PhysMemBalloon / (_1M/pGuestStats->u32PageSize));
    507483
    508484    if (pGuestStats->u32StatCaps & VBOX_GUEST_STAT_MEM_SYSTEM_CACHE)
    509         guest->SetStatistic(pGuestStats->u32CpuId, GuestStatisticType_MemSystemCache, pGuestStats->u32MemSystemCache / (_1M/pGuestStats->u32PageSize));
     485        guest->SetStatistic(pGuestStats->u32CpuId, GUESTSTATTYPE_MEMCACHE, pGuestStats->u32MemSystemCache / (_1M/pGuestStats->u32PageSize));
    510486
    511487    if (pGuestStats->u32StatCaps & VBOX_GUEST_STAT_PAGE_FILE_SIZE)
    512         guest->SetStatistic(pGuestStats->u32CpuId, GuestStatisticType_PageFileSize, pGuestStats->u32PageFileSize / (_1M/pGuestStats->u32PageSize));
    513 
    514     /* increase sample number */
    515     ULONG sample;
    516 
    517     int rc = guest->GetStatistic(0, GuestStatisticType_SampleNumber, &sample);
    518     if (SUCCEEDED(rc))
    519         guest->SetStatistic(pGuestStats->u32CpuId, GuestStatisticType_SampleNumber, sample+1);
    520 #endif
     488        guest->SetStatistic(pGuestStats->u32CpuId, GUESTSTATTYPE_PAGETOTAL, pGuestStats->u32PageFileSize / (_1M/pGuestStats->u32PageSize));
     489
    521490    return VINF_SUCCESS;
    522491}
  • trunk/src/VBox/Main/include/GuestImpl.h

    r27888 r27896  
    2525#include "VirtualBoxBase.h"
    2626#include <VBox/ostypes.h>
     27
     28typedef enum
     29{
     30    GUESTSTATTYPE_CPUUSER     = 0,
     31    GUESTSTATTYPE_CPUKERNEL   = 1,
     32    GUESTSTATTYPE_CPUIDLE     = 2,
     33    GUESTSTATTYPE_MEMTOTAL    = 3,
     34    GUESTSTATTYPE_MEMFREE     = 4,
     35    GUESTSTATTYPE_MEMBALLOON  = 5,
     36    GUESTSTATTYPE_MEMCACHE    = 6,
     37    GUESTSTATTYPE_PAGETOTAL   = 7,
     38    GUESTSTATTYPE_PAGEFREE    = 8,
     39    GUESTSTATTYPE_MAX         = 8
     40} GUESTSTATTYPE;
    2741
    2842class Console;
     
    8599    void setSupportsGraphics (BOOL aSupportsGraphics);
    86100
     101    HRESULT SetStatistic(ULONG aCpuId, GUESTSTATTYPE enmType, ULONG aVal);
     102
    87103    // for VirtualBoxSupportErrorInfoImpl
    88104    static const wchar_t *getComponentName() { return L"Guest"; }
     
    112128    ULONG mMemoryBalloonSize;
    113129    ULONG mStatUpdateInterval;
     130    ULONG mCurrentGuestStat[GUESTSTATTYPE_MAX];
    114131
    115132    Console *mParent;
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