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
Unknown Object (File)
Tue, Oct 6, 11:42 AM
Unknown Object (File)
Sat, Oct 3, 2:05 AM
Unknown Object (File)
Thu, Sep 24, 4:31 PM
Unknown Object (File)
Thu, Sep 24, 2:52 PM
Unknown Object (File)
Sun, Sep 20, 7:53 PM
Unknown Object (File)
Thu, Sep 17, 3:23 AM
Unknown Object (File)
Sun, Sep 13, 8:37 AM
Unknown Object (File)
Fri, Sep 11, 3:22 AM
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