HomeFreeBSD

vlapic: Schedule callouts on the local CPU

Description

vlapic: Schedule callouts on the local CPU

The virtual LAPIC driver uses callouts to implement the LAPIC timer.
Callouts are armed using callout_reset_sbt(), which currently puts
everything on CPU 0. On systems running many bhyve VMs this results in
a large amount of contention for CPU 0's callout lock.

Modify vlapic to schedule callouts on the local CPU instead. This
allows timer interrupts to be scheduled more evenly among CPUs where
bhyve is running.

Reviewed by: grehan, jhb
MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D32559

Details

Provenance
markjAuthored on Oct 20 2021, 12:50 AM
Reviewer
grehan
Differential Revision
D32559: vlapic: Schedule callouts on the local CPU
Parents
rGbd49c454ca62: Bump __FreeBSD_version for the preceding page allocator changes
Branches
Unknown
Tags
Unknown