On Thu, 2026-09-24 at 00:26 +0800, KunWu Chan wrote:
> The parallel interrupt delivery case sounds particularly interesting.
> Please don't go to any trouble if the old results are not available.

The old results were on the original RCU-based (not SRCU) version, so
I redid them with the latest, on the 192-way PREEMPT_RT GNR box.

It's a bit of a microbenchmark: N vCPUs spinning in guest mode, with N
more sender threads, each delivering interrupts as fast as it can to
its own paired vCPU thread. The vCPU isn't even acknowledging the
interrupt, but the locked btsl will still be dirtying the cache lines
of the shared info evtchn_pending bitmap even to find that the bit is
already set (qv).

The rwlock version gets up to 8-9M deliveries per second and then
starts to regress past about 32 parallel vCPUs. While SRCU starts off
faster, and gets more so.

Deliveries/sec, spread layout:
  ┌───────┬──────────┬─────────────┬───────┐
  │ vCPUs │  rwlock  │ atomic SRCU │ ratio │
  ├───────┼──────────┼─────────────┼───────┤
  │ 1     │ 1.02M    │ 1.13M       │ 1.1×  │
  ├───────┼──────────┼─────────────┼───────┤
  │ 2     │ 1.87M    │ 2.27M       │ 1.2×  │
  ├───────┼──────────┼─────────────┼───────┤
  │ 4     │ 3.59M    │ 4.57M       │ 1.3×  │
  ├───────┼──────────┼─────────────┼───────┤
  │ 8     │ 7.06M    │ 9.13M       │ 1.3×  │
  ├───────┼──────────┼─────────────┼───────┤
  │ 16    │ 8.75M    │ 16.8M       │ 1.9×  │
  ├───────┼──────────┼─────────────┼───────┤
  │ 32    │ 8.52M    │ 33.3M       │ 3.9×  │
  ├───────┼──────────┼─────────────┼───────┤
  │ 64    │ 6.75M    │ 63.7M       │ 9.4×  │
  └───────┴──────────┴─────────────┴───────┘

This is with the port numbers of each of the N CPUs deliberately spread
out into different cache lines (which arguably we ought to do for
production guests, but we don't). If I let them all pack with
sequential port# allocation, it makes no difference to rwlock but the
SRCU variant hits a scaling cliff around N=16 too (17.2M @32, 14.0M
@64). But hey, as I said: microbenchmark.

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to