Page MenuHomeFreeBSD

ktls: NUMA awareness

Authored by gallatin on Sep 13 2019, 8:07 PM.
Referenced Files
Unknown Object (File)
Sat, May 4, 4:06 PM
Unknown Object (File)
Thu, Apr 25, 5:44 AM
Unknown Object (File)
Apr 20 2024, 5:35 AM
Unknown Object (File)
Apr 19 2024, 8:37 PM
Unknown Object (File)
Jan 13 2024, 6:17 AM
Unknown Object (File)
Jan 4 2024, 7:56 PM
Unknown Object (File)
Dec 28 2023, 8:14 PM
Unknown Object (File)
Dec 22 2023, 11:20 PM
"Like" token, awarded by mm.



When ktls_bind_thread is 2 or more,, we should pick a ktls worker thread that is bound to the same domain as the TCP connection associated with the socket. We use roughly the same code as netinet/tcp_hpts.c to do this. This allows crypto to run on the same domain as the TCP connection is associated with. Assuming TCP_REUSPORT_LB_NUMA ( D21636) is in place & in use, this ensures that the crypto source buffers are local to the same NUMA domain as we're running crypto on.

Additionally, we need to set our worker threads's domainset policy to prefer the local domain so that the vm pages we allocate as destination crypto buffers are allocated from memory on the local NUMA node. Doing this eliminates writing across the QPI (or other) NUMA interconnect when doing encryption.

This change (when TCP_REUSPORT_LB_NUMA, D21636, is used) reduces cross-domain traffic from over 37% down to about 13% as measured by pcm.x

Diff Detail

rS FreeBSD src repository - subversion
Lint Not Applicable
Tests Not Applicable

Event Timeline

jhb added inline comments.
92 ↗(On Diff #80917)

Maybe drop the blank lines after this to group it with the other globals?

435 ↗(On Diff #80917)

Blank line here.

This revision is now accepted and ready to land.Dec 18 2020, 9:59 PM
gallatin marked 2 inline comments as done.

Thanks so much for reviewing. I've made the changes you requested in the patch I'm about to commit.

This revision was automatically updated to reflect the committed changes.