• Home
  • Raw
  • Download

Lines Matching +full:i +full:- +full:cache +full:- +full:sets

1 .. SPDX-License-Identifier: GPL-2.0
13 multi-processor systems.
17 - RSS: Receive Side Scaling
18 - RPS: Receive Packet Steering
19 - RFS: Receive Flow Steering
20 - Accelerated Receive Flow Steering
21 - XPS: Transmit Packet Steering
28 (multi-queue). On reception, a NIC can send different packets to different
33 generally known as “Receive-side Scaling” (RSS). The goal of RSS and
35 Multi-queue distribution can also be used for traffic prioritization, but
39 and/or transport layer headers-- for example, a 4-tuple hash over
41 implementation of RSS uses a 128-entry indirection table where each entry
49 can be directed to their own receive queue. Such “n-tuple” filters can
50 be configured from ethtool (--config-ntuple).
54 -----------------
56 The driver for a multi-queue capable NIC typically provides a kernel
68 commands (--show-rxfh-indir and --set-rxfh-indir). Modifying the
78 signaling path for PCIe devices uses message signaled interrupts (MSI-X),
81 an IRQ may be handled on any CPU. Because a non-negligible part of packet
84 affinity of each interrupt see Documentation/IRQ-affinity.txt. Some systems
96 NIC maximum, if lower). The most efficient high-rate configuration
102 Per-cpu load can be observed using the mpstat utility, but note that on
123 introduce inter-processor interrupts (IPIs))
131 flow hash over the packet’s addresses or ports (2-tuple or 4-tuple hash
137 skb->hash and can be used elsewhere in the stack as a hash of the
152 -----------------
159 /sys/class/net/<dev>/queues/rx-<n>/rps_cpus
163 CPU. Documentation/IRQ-affinity.txt explains how CPUs are assigned to
176 For a multi-queue system, if RSS is configured so that a hardware
184 --------------
187 reordering. The trade-off to sending all packets from the same flow
199 net.core.netdev_max_backlog), the kernel starts a per-flow packet
214 and cache contention) and toggled per CPU by setting the relevant bit
220 Per-flow rate is calculated by hashing each packet into a hashtable
221 bucket and incrementing a per-bucket counter. The hash function is
223 be much larger than the number of CPUs, flow limit has finer-grained
291 in rps_dev_flow[i] records the last element in flow i that has
292 been enqueued onto the currently designated CPU for flow i (of course,
293 entry i is actually selected by hash and multiple flows may hash to the
294 same entry i).
305 - The current CPU's queue head counter >= the recorded tail counter
306 value in rps_dev_flow[i]
307 - The current CPU is unset (>= nr_cpu_ids)
308 - The current CPU is offline
318 -----------------
326 The number of entries in the per-queue flow table are set through::
328 /sys/class/net/<dev>/queues/rx-<n>/rps_flow_cnt
343 For a multi-queue device, the rps_flow_cnt for each queue might be
353 Accelerated RFS is to RFS what RSS is to RPS: a hardware-accelerated load
359 which is local to the application thread’s CPU in the cache hierarchy.
370 is maintained by the NIC driver. This is an auto-generated reverse map of
374 set to be one whose processing CPU is closest in cache locality.
378 -----------------------------
399 which transmit queue to use when transmitting a packet on a multi-queue
412 transmit queue). Secondly, cache miss rate on transmit completion is
413 reduced, in particular for data cache lines that hold the sk_buff
423 busy polling multi-threaded workloads where there are challenges in
430 the same queue-association that a given application is polling on. This
437 CPUs/receive-queues that may use that queue to transmit. The reverse
438 mapping, from CPUs to transmit queues or from receive-queues to transmit
442 for the socket connection for a match in the receive queue-to-transmit queue
444 running CPU as a key into the CPU-to-queue lookup table. If the
457 skb->ooo_okay is set for a packet in the flow. This flag indicates that
461 for instance, sets the flag when all data for a connection has been
465 -----------------
469 configured. To enable XPS, the bitmap of CPUs/receive-queues that may
474 /sys/class/net/<dev>/queues/tx-<n>/xps_cpus
476 For selection based on receive-queues map::
478 /sys/class/net/<dev>/queues/tx-<n>/xps_rxqs
485 has no effect, since there is no choice in this case. In a multi-queue
490 best CPUs to share a given queue are probably those that share the cache
495 explicitly configured mapping receive-queue(s) to transmit queue(s). If the
496 user configuration for receive-queue map does not apply, then the transmit
503 These are rate-limitation mechanisms implemented by HW, where currently
504 a max-rate attribute is supported, by setting a Mbps value to::
506 /sys/class/net/<dev>/queues/tx-<n>/tx_maxrate
522 - Tom Herbert (therbert@google.com)
523 - Willem de Bruijn (willemb@google.com)