VirtualBox

Changeset 30684 in vbox for trunk/src/VBox/VMM/VMMAll


Ignore:
Timestamp:
Jul 6, 2010 7:57:20 PM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
63445
Message:

TM: Added resettable accounting stats. Count the halts and execution periods.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/TMAll.cpp

    r30581 r30684  
    193193
    194194#ifndef VBOX_WITHOUT_NS_ACCOUNTING
    195     uint32_t uGen    = ASMAtomicIncU32(&pVCpu->tm.s.uTimesGen); Assert(uGen & 1);
    196     uint64_t u64NsTs = RTTimeNanoTS();
    197     pVCpu->tm.s.cNsExecuting += u64NsTs - pVCpu->tm.s.u64NsTsStartExecuting;
    198     pVCpu->tm.s.cNsTotal      = u64NsTs - pVCpu->tm.s.u64NsTsStartTotal;
    199     pVCpu->tm.s.cNsOther      = pVCpu->tm.s.cNsTotal - pVCpu->tm.s.cNsExecuting - pVCpu->tm.s.cNsHalted;
     195    uint64_t const u64NsTs           = RTTimeNanoTS();
     196    uint64_t const cNsTotalNew       = u64NsTs - pVCpu->tm.s.u64NsTsStartTotal;
     197    uint64_t const cNsExecutingDelta = u64NsTs - pVCpu->tm.s.u64NsTsStartExecuting;
     198    uint64_t const cNsExecutingNew   = pVCpu->tm.s.cNsExecuting + cNsExecutingDelta;
     199    uint64_t const cNsOtherNew       = cNsTotalNew - cNsExecutingNew - pVCpu->tm.s.cNsHalted;
     200
     201    STAM_PROFILE_ADD_PERIOD(&pVCpu->tm.s.StatNsExecuting, cNsExecutingDelta);
     202    STAM_COUNTER_ADD(&pVCpu->tm.s.StatNsTotal, cNsTotalNew - pVCpu->tm.s.cNsTotal);
     203# ifdef VBOX_WITH_STATISTICS
     204    int64_t  const cNsOtherNewDelta  = cNsOtherNew - pVCpu->tm.s.cNsOther;
     205    if (cNsOtherNewDelta > 0)
     206        STAM_PROFILE_ADD_PERIOD(&pVCpu->tm.s.StatNsOther, cNsOtherNewDelta); /* (the period before execution) */
     207# endif
     208
     209    uint32_t uGen = ASMAtomicIncU32(&pVCpu->tm.s.uTimesGen); Assert(uGen & 1);
     210    pVCpu->tm.s.cNsExecuting = cNsExecutingNew;
     211    pVCpu->tm.s.cNsTotal     = cNsTotalNew;
     212    pVCpu->tm.s.cNsOther     = cNsOtherNew;
     213    pVCpu->tm.s.cPeriodsExecuting++;
    200214    ASMAtomicWriteU32(&pVCpu->tm.s.uTimesGen, (uGen | 1) + 1);
    201215#endif
     
    246260
    247261#ifndef VBOX_WITHOUT_NS_ACCOUNTING
    248     uint32_t uGen    = ASMAtomicIncU32(&pVCpu->tm.s.uTimesGen); Assert(uGen & 1);
    249     uint64_t u64NsTs = RTTimeNanoTS();
    250     pVCpu->tm.s.cNsHalted += u64NsTs - pVCpu->tm.s.u64NsTsStartHalting;
    251     pVCpu->tm.s.cNsTotal   = u64NsTs - pVCpu->tm.s.u64NsTsStartTotal;
    252     pVCpu->tm.s.cNsOther   = pVCpu->tm.s.cNsTotal - pVCpu->tm.s.cNsExecuting - pVCpu->tm.s.cNsHalted;
     262    uint64_t const u64NsTs        = RTTimeNanoTS();
     263    uint64_t const cNsTotalNew    = u64NsTs - pVCpu->tm.s.u64NsTsStartTotal;
     264    uint64_t const cNsHaltedDelta = u64NsTs - pVCpu->tm.s.u64NsTsStartHalting;
     265    uint64_t const cNsHaltedNew   = pVCpu->tm.s.cNsHalted + cNsHaltedDelta;
     266    uint64_t const cNsOtherNew    = cNsTotalNew - pVCpu->tm.s.cNsExecuting - cNsHaltedNew;
     267
     268    STAM_PROFILE_ADD_PERIOD(&pVCpu->tm.s.StatNsHalted, cNsHaltedDelta);
     269    STAM_COUNTER_ADD(&pVCpu->tm.s.StatNsTotal, cNsTotalNew - pVCpu->tm.s.cNsTotal);
     270# ifdef VBOX_WITH_STATISTICS
     271    int64_t  const cNsOtherNewDelta  = cNsOtherNew - pVCpu->tm.s.cNsOther;
     272    if (cNsOtherNewDelta > 0)
     273        STAM_PROFILE_ADD_PERIOD(&pVCpu->tm.s.StatNsOther, cNsOtherNewDelta); /* (the period before halting) */
     274# endif
     275
     276    uint32_t uGen = ASMAtomicIncU32(&pVCpu->tm.s.uTimesGen); Assert(uGen & 1);
     277    pVCpu->tm.s.cNsHalted = cNsHaltedNew;
     278    pVCpu->tm.s.cNsTotal  = cNsTotalNew;
     279    pVCpu->tm.s.cNsOther  = cNsOtherNew;
     280    pVCpu->tm.s.cPeriodsHalted++;
    253281    ASMAtomicWriteU32(&pVCpu->tm.s.uTimesGen, (uGen | 1) + 1);
    254282#endif
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