Page MenuHomeFreeBSD

ena: Put taskqueues into correct domain if !RSS
ClosedPublic

Authored by cperciva on Sat, Jun 27, 11:47 PM.
Tags
None
Referenced Files
Unknown Object (File)
Sun, Jul 19, 10:04 PM
Unknown Object (File)
Tue, Jul 14, 11:00 AM
Unknown Object (File)
Tue, Jul 14, 11:00 AM
Unknown Object (File)
Tue, Jul 14, 11:00 AM
Unknown Object (File)
Tue, Jul 14, 11:00 AM
Unknown Object (File)
Tue, Jul 14, 11:00 AM
Unknown Object (File)
Tue, Jul 14, 11:00 AM
Unknown Object (File)
Tue, Jul 14, 11:00 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.Mon, Jul 13, 10:16 PM

Commit message edited for correctness and clarity.

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