VirtualBox

Changeset 100695 in vbox for trunk/src/VBox/VMM


Ignore:
Timestamp:
Jul 25, 2023 11:03:20 AM (17 months ago)
Author:
vboxsync
Message:

VMM/IEM,STAM: Some TB stats. bugref:10369

Location:
trunk/src/VBox/VMM
Files:
4 edited

Legend:

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

    r100694 r100695  
    741741    pTb->pNext = g_TbCache.apHash[idxHash];
    742742    g_TbCache.apHash[idxHash] = pTb;
     743    STAM_REL_PROFILE_ADD_PERIOD(&pVCpu->iem.s.StatTbThreadedInstr, pTb->cInstructions);
     744    STAM_REL_PROFILE_ADD_PERIOD(&pVCpu->iem.s.StatTbThreadedCalls, pTb->Thrd.cCalls);
    743745    Log12(("TB added: %p %RGp LB %#x fl=%#x idxHash=%#x\n", pTb, pTb->GCPhysPc, pTb->cbOpcodes, pTb->fFlags, idxHash));
    744     RT_NOREF(pVM, pVCpu);
     746    RT_NOREF(pVM);
    745747}
    746748
  • trunk/src/VBox/VMM/VMMR3/IEMR3.cpp

    r100305 r100695  
    170170#ifdef VBOX_WITH_IEM_RECOMPILER
    171171        STAMR3RegisterF(pVM, (void *)&pVCpu->iem.s.cTbExec,             STAMTYPE_U64_RESET, STAMVISIBILITY_ALWAYS, STAMUNIT_NONE,
    172                         "Executed translation block",               "/IEM/CPU%u/cTbExec", idCpu);
     172                        "Executed translation block",                   "/IEM/CPU%u/cTbExec", idCpu);
    173173        STAMR3RegisterF(pVM, (void *)&pVCpu->iem.s.cTbAllocs,           STAMTYPE_U64,       STAMVISIBILITY_ALWAYS, STAMUNIT_NONE,
    174                         "Translation block allocations",            "/IEM/CPU%u/cTbAllocs", idCpu);
     174                        "Translation block allocations",                "/IEM/CPU%u/cTbAllocs", idCpu);
    175175        STAMR3RegisterF(pVM, (void *)&pVCpu->iem.s.cTbFrees,            STAMTYPE_U64,       STAMVISIBILITY_ALWAYS, STAMUNIT_NONE,
    176                         "Translation block frees",                  "/IEM/CPU%u/cTbFrees", idCpu);
     176                        "Translation block frees",                      "/IEM/CPU%u/cTbFrees", idCpu);
    177177        STAMR3RegisterF(pVM, (void *)&pVCpu->iem.s.cTbLookupHits,       STAMTYPE_U64_RESET, STAMVISIBILITY_ALWAYS, STAMUNIT_NONE,
    178                         "Translation block lookup hits",            "/IEM/CPU%u/cTbLookupHits", idCpu);
     178                        "Translation block lookup hits",                "/IEM/CPU%u/cTbLookupHits", idCpu);
    179179        STAMR3RegisterF(pVM, (void *)&pVCpu->iem.s.cTbLookupMisses,     STAMTYPE_U64_RESET, STAMVISIBILITY_ALWAYS, STAMUNIT_NONE,
    180                         "Translation block lookup misses",          "/IEM/CPU%u/cTbLookupMisses", idCpu);
     180                        "Translation block lookup misses",              "/IEM/CPU%u/cTbLookupMisses", idCpu);
     181
     182        STAMR3RegisterF(pVM, (void *)&pVCpu->iem.s.StatTbThreadedCalls, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_CALLS_PER_TB,
     183                        "Calls per threaded translation block",         "/IEM/CPU%u/ThrdCallsPerTb", idCpu);
     184        STAMR3RegisterF(pVM, (void *)&pVCpu->iem.s.StatTbThreadedInstr, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_INSTR_PER_TB,
     185                        "Instruction per threaded translation block",   "/IEM/CPU%u/ThrdInstrPerTb", idCpu);
    181186#endif
    182187
  • trunk/src/VBox/VMM/VMMR3/STAM.cpp

    r98103 r100695  
    30423042        case STAMUNIT_NONE:                 return "";
    30433043        case STAMUNIT_CALLS:                return "calls";
     3044        case STAMUNIT_CALLS_PER_TB:         return "calls/tb";
    30443045        case STAMUNIT_COUNT:                return "count";
    30453046        case STAMUNIT_BYTES:                return "bytes";
     
    30593060        case STAMUNIT_PCT:                  return "%";
    30603061        case STAMUNIT_HZ:                   return "Hz";
     3062        case STAMUNIT_INSTR:                return "instr";
     3063        case STAMUNIT_INSTR_PER_TB:         return "instr/tb";
    30613064
    30623065        default:
     
    30793082        case STAMUNIT_NONE:                 return "";
    30803083        case STAMUNIT_CALLS:                return "calls";
     3084        case STAMUNIT_CALLS_PER_TB:         return "calls";
    30813085        case STAMUNIT_COUNT:                return "count";
    30823086        case STAMUNIT_BYTES:                return "bytes";
     
    30963100        case STAMUNIT_PCT:                  return "%";
    30973101        case STAMUNIT_HZ:                   return "Hz";
     3102        case STAMUNIT_INSTR:                return "instr";
     3103        case STAMUNIT_INSTR_PER_TB:         return "instr";
    30983104
    30993105        default:
     
    31213127        case STAMUNIT_NONE:                 return "times";
    31223128        case STAMUNIT_GOOD_BAD:             return "bad";
     3129        case STAMUNIT_CALLS_PER_TB:         return "tbs";
     3130        case STAMUNIT_INSTR_PER_TB:         return "tbs";
    31233131        default:
    31243132            AssertMsgFailed(("Wrong unit %d\n", enmUnit));
  • trunk/src/VBox/VMM/include/IEMInternal.h

    r100694 r100695  
    11481148    /** Spaced reserved for recompiler data / alignment. */
    11491149    bool                    afRecompilerStuff1[4];
     1150    /** Threaded TB statistics: Number of instructions per TB. */
     1151    STAMPROFILE             StatTbThreadedInstr;
     1152    /** Threaded TB statistics: Number of calls per TB. */
     1153    STAMPROFILE             StatTbThreadedCalls;
    11501154    /** @} */
    11511155
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