VirtualBox

Changeset 89734 in vbox


Ignore:
Timestamp:
Jun 16, 2021 8:08:42 AM (3 years ago)
Author:
vboxsync
Message:

DevIoApic: Added stats to track how long level-triggered interrupts spend in the pending (active) state on the I/O APIC.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/PC/DevIoApic.cpp

    r89620 r89734  
    320320     *  APIC(s). */
    321321    STAMCOUNTER             StatEoiReceived;
     322    /** The time an interrupt level spent in the pending state. */
     323    STAMPROFILEADV          aStatLevelAct[IOAPIC_NUM_INTR_PINS];
    322324#endif
    323325    /** Per-vector stats. */
     
    677679        pThis->au64RedirTable[idxRte] |= IOAPIC_RTE_REMOTE_IRR;
    678680        STAM_COUNTER_INC(&pThis->StatLevelIrqSent);
     681        STAM_PROFILE_ADV_START(&pThis->aStatLevelAct[idxRte], a);
    679682    }
    680683}
     
    866869            pThis->au64RedirTable[idxRte] &= ~IOAPIC_RTE_REMOTE_IRR;
    867870            fRemoteIrrCleared = true;
     871            STAM_PROFILE_ADV_STOP(&pThis->aStatLevelAct[idxRte], a);
    868872            STAM_COUNTER_INC(&pThis->StatEoiReceived);
    869873            Log2(("IOAPIC: ioapicSetEoi: Cleared remote IRR, idxRte=%u vector=%#x (%u)\n", idxRte, u8Vector, u8Vector));
     
    16671671    PDMDevHlpSTAMRegister(pDevIns, &pThis->StatLevelIrqSent, STAMTYPE_COUNTER, "LevelIntr/Sent", STAMUNIT_OCCURENCES, "Number of level-triggered interrupts sent to the local APIC(s).");
    16681672    PDMDevHlpSTAMRegister(pDevIns, &pThis->StatEoiReceived,  STAMTYPE_COUNTER, "LevelIntr/Recv", STAMUNIT_OCCURENCES, "Number of EOIs received for level-triggered interrupts from the local APIC(s).");
     1673
     1674    for (int i = 0; i < RT_ELEMENTS(pThis->aStatLevelAct); ++i)
     1675        PDMDevHlpSTAMRegisterF(pDevIns, &pThis->aStatLevelAct[i], STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Time spent in the level active state", "IntPending/%02x", i);
    16691676# endif
    16701677    for (size_t i = 0; i < RT_ELEMENTS(pThis->aStatVectors); i++)
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