Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| devsummit:201305:networkreceiveperformance [2013/05/13 16:39] – GeorgeNevilleNeil | devsummit:201305:networkreceiveperformance [2021/04/25 08:17] (current) – Fix DevSummit links. JethroNederhof | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ===== FreeBSD Developer Summit: Network Receive Performance ===== | ===== FreeBSD Developer Summit: Network Receive Performance ===== | ||
| - | |||
| - | //(Add the exact date and time of your working group here.)// | ||
| ==== Overview ==== | ==== Overview ==== | ||
| Line 19: | Line 17: | ||
| ==== Attending ==== | ==== Attending ==== | ||
| - | In order to attend you need register for the [[/ | + | In order to attend you need register for the [[/ |
| - | **Please do NOT add yourself here.** Your name will appear automatically once you have received the confirmation email. You need to put your name on the general [[/201305DevSummit|developer summit]] attendees list though. | + | **Please do NOT add yourself here.** Your name will appear automatically once you have received the confirmation email. You need to put your name on the general [[DevSummit/201305|developer summit]] attendees list though. |
| ^ Name ^ Username / Affiliation ^ Topics of Interest ^ Notes ^ | ^ Name ^ Username / Affiliation ^ Topics of Interest ^ Notes ^ | ||
| Line 33: | Line 31: | ||
| | Mike Karels | mike at karels.net | | | | | Mike Karels | mike at karels.net | | | | ||
| | Jeremiah Lott | jlott at averesystems.com | | | | | Jeremiah Lott | jlott at averesystems.com | | | | ||
| + | | Mark Johnston | | | | | ||
| | %%KennethDMerry%% | ken | | | | | %%KennethDMerry%% | ken | | | | ||
| | [[/ | | [[/ | ||
| + | | Juan Mojica | Juan.Mojica at netapp dot com | | | | ||
| | [[/ | | [[/ | ||
| | [[/ | | [[/ | ||
| | [[/ | | [[/ | ||
| + | | Jeffrey Roberson | jeffr | | | | ||
| | Anuranjan Shukla | anshukla at juniper.net | | | | | Anuranjan Shukla | anshukla at juniper.net | | | | ||
| | [[/ | | [[/ | ||
| + | | Ryan Stone | rysto32 at gmail.com | * | | | ||
| + | | Jim Thompson | jim at netgate.com | * | | | ||
| | Eric van Gyzen | eric_van_gyzen at dell.com | | | | | Eric van Gyzen | eric_van_gyzen at dell.com | | | | ||
| | Bryan Venteicher | bryanv | | | | | Bryan Venteicher | bryanv | | | | ||
| Line 47: | Line 50: | ||
| ==== Notes ==== | ==== Notes ==== | ||
| - | //(Add your notes here.)// | + | The discussion opened with an attempt to constrain the problem we were trying to solve, including pointing out that any KPI/API suggested needed to be achievable in the next six months. |
| + | |||
| + | Some of the existing solutions to the problem of talking to hardware with multiple queues, which all high end NICs currently have, were: | ||
| + | |||
| + | * Connection Groups | ||
| + | * Not really a KPI | ||
| + | * RSS vs. Flow Table is an issue to solve, we have things for the former, but little for the latter | ||
| + | * Socket affinity is also an issue | ||
| + | * NAPI | ||
| + | * This is an APi in Linux. | ||
| + | * Flow table mapping. | ||
| + | * SRIO | ||
| + | * VLL Cloner | ||
| + | |||
| + | There are several ways to map flows, including: 4 tuple, MAC filter, arbitrary offset. | ||
| + | |||
| + | Some methods that a good KPI/API ought to have include: | ||
| + | * Query Device for information about its queues, including how many exist, and how they are mapped to other resources, including CPU and memory | ||
| + | * Map CPUID to a Flow | ||
| + | * Setup RSS | ||
| + | * Request %%RxRing%% local memory | ||
| + | * Solaris Mapping API might be a way to go ([[http:// | ||
| + | * | ||
| + | |||
| + | Some consumers of such an API include: Performance, | ||
| + | |||
| + | We have two patches, for different bits, to start from including Vijay' | ||
| + | |||
| + | We need quite a few things, including: | ||
| + | |||
| + | * Per connection flow table | ||
| + | * Describing queues in the stack such that we can expose interesting parts via netstat. | ||
| + | * Packet Batching. | ||
| + | |||
| + | A straw person API includes: | ||
| + | |||
| + | * MBUF Flag | ||
| + | * Hash Value | ||
| + | * The whole thing may be used as opaque | ||
| + | * Used by the stack for inpcb | ||
| + | * Get number of buckets | ||
| + | * Map bucket to RSS | ||
| + | * Map queue/ | ||
| + | * Get width of the hash | ||
| + | * RSS get CPU | ||
| + | * RSS get hash algo | ||
| + | * Pick hash inputs | ||
| + | * Get and set key | ||
| + | * Rebalance | ||
| + | * Software hash table | ||
| + | * Query queue length | ||
| + | * Get queue affinity | ||
| + | * Set mask (CPUSET) on socket | ||
| + | * Set policy on CPU/ | ||
| + | * Queue event reporting | ||
| + | * Load distrubtion stats | ||
| + | |||
| + | [[DevSummit/ | ||
| ==== Results ==== | ==== Results ==== | ||
| //(Add a list or attach slides detailing the achieved results here.)// | //(Add a list or attach slides detailing the achieved results here.)// | ||
| + | |||
| + | ---- | ||
| + | |||
| + | {{tag> | ||