Page MenuHomeFreeBSD

ena: Put taskqueues into correct domain if !RSS
ClosedPublic

Authored by cperciva on Jun 27 2026, 11:47 PM.
Tags
None
Referenced Files
F166969155: D57918.id.diff
Tue, Aug 18, 6:31 AM
Unknown Object (File)
Mon, Aug 17, 5:27 PM
Unknown Object (File)
Mon, Aug 17, 12:57 PM
Unknown Object (File)
Mon, Aug 17, 4:03 AM
Unknown Object (File)
Sun, Aug 16, 4:34 AM
Unknown Object (File)
Thu, Aug 13, 6:19 PM
Unknown Object (File)
Thu, Aug 13, 2:38 AM
Unknown Object (File)
Tue, Aug 11, 6:11 PM
Subscribers

Details

Summary

When compiled without 'options RSS', the ena driver created taskqueues
using taskqueue_start_threads_cpuset passing a mask value of NULL,
both in the ena_setup_tx_resources path (for enqueues) and in the
ena_create_io_queues path (for the completion-processing).

In the default configuration, on most EC2 instances, this results in
taskqueues running in the right NUMA domain, but only by accident; in
non-default configurations (e.g. with with multiple EBS volumes
attached and associated NVMe taskqueues) the taskqueues may land in
the wrong NUMA domain even on instance types where the one-EBS-one-ENA
case produces the desired results.

Set (struct ena_que)->domain and use that to inform the choice of CPU
sets. On a c8gn.48xlarge EC2 instance this doubles throughput on a
32-TCP-stream benchmark.

MFC after: 7 days
Sponsored by: Amazon

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

small nit: I think "compiled with 'options RSS'" in comit message should be "compiled without 'options RSS'"

Otherwise LGTM

This revision now requires changes to proceed.Jul 13 2026, 10:16 PM

Commit message edited for correctness and clarity.

This revision is now accepted and ready to land.Jul 14 2026, 1:10 AM