a39249680f
Currently, there is a single pm_stalled flag that tracks whether a performance monitor was "stalled" due to insufficent ring buffer space for samples. However, because the same performance monitor can run on multiple processes or threads at the same time, a single pm_stalled flag that impacts them all seems insufficient. In particular, you can hit corner cases where the code fails to stop performance monitors during a context switch out, because it thinks the performance monitor is already stopped. However, in reality, it may be that only the monitor running on a different CPU was stalled. This patch attempts to fix that behavior by tracking on a per-CPU basis whether a PM desires to run and whether it is "stalled". This lets the code make better decisions about when to stop PMs and when to try to restart them. Ideally, we should avoid the case where the code fails to stop a PM during a context switch out. Sponsored by: Juniper Networks Reviewed by: jhb Approved by: gnn (mentor) Differential Revision: https://reviews.freebsd.org/D4124 |
||
---|---|---|
.. | ||
hwpmc_amd.c | ||
hwpmc_amd.h | ||
hwpmc_arm64_md.c | ||
hwpmc_arm64.c | ||
hwpmc_arm64.h | ||
hwpmc_arm.c | ||
hwpmc_armv7.c | ||
hwpmc_armv7.h | ||
hwpmc_core.c | ||
hwpmc_core.h | ||
hwpmc_e500.c | ||
hwpmc_intel.c | ||
hwpmc_logging.c | ||
hwpmc_mips24k.c | ||
hwpmc_mips74k.c | ||
hwpmc_mips.c | ||
hwpmc_mod.c | ||
hwpmc_mpc7xxx.c | ||
hwpmc_octeon.c | ||
hwpmc_pentium.c | ||
hwpmc_pentium.h | ||
hwpmc_piv.c | ||
hwpmc_piv.h | ||
hwpmc_powerpc.c | ||
hwpmc_powerpc.h | ||
hwpmc_ppc970.c | ||
hwpmc_ppro.c | ||
hwpmc_ppro.h | ||
hwpmc_soft.c | ||
hwpmc_soft.h | ||
hwpmc_sparc64.c | ||
hwpmc_tsc.c | ||
hwpmc_tsc.h | ||
hwpmc_uncore.c | ||
hwpmc_uncore.h | ||
hwpmc_x86.c | ||
hwpmc_xscale.c | ||
hwpmc_xscale.h | ||
pmc_events.h |