lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CACSApvZcw+A_gRwFi3vErYp5WkY=v9sC7aTxFzKvY5GdtOQB+w@mail.gmail.com>
Date: Tue, 5 Mar 2024 13:28:42 -0500
From: Soheil Hassas Yeganeh <soheil@...gle.com>
To: Eric Dumazet <edumazet@...gle.com>
Cc: "David S . Miller" <davem@...emloft.net>, Jakub Kicinski <kuba@...nel.org>, 
	Paolo Abeni <pabeni@...hat.com>, netdev@...r.kernel.org, 
	David Ahern <dsahern@...nel.org>, Willem de Bruijn <willemb@...gle.com>, 
	Neal Cardwell <ncardwell@...gle.com>, eric.dumazet@...il.com
Subject: Re: [PATCH net-next 00/18] net: group together hot data

On Tue, Mar 5, 2024 at 11:04 AM Eric Dumazet <edumazet@...gle.com> wrote:
>
> While our recent structure reorganizations were focused
> on increasing max throughput, there is still an
> area where improvements are much needed.
>
> In many cases, a cpu handles one packet at a time,
> instead of a nice batch.
>
> Hardware interrupt.
>  -> Software interrupt.
>    -> Network/Protocol stacks.
>
> If the cpu was idle or busy in other layers,
> it has to pull many cache lines.
>
> This series adds a new net_hotdata structure, where
> some critical (and read-mostly) data used in
> rx and tx path is packed in a small number of cache lines.
>
> Synthetic benchmarks will not see much difference,
> but latency of single packet should improve.
>
> net_hodata current size on 64bit is 416 bytes,
> but might grow in the future.
>
> Also move RPS definitions to a new include file.

Acked-by: Soheil Hassas Yeganeh <soheil@...gle.com>

Nice series!

> Eric Dumazet (18):
>   net: introduce struct net_hotdata
>   net: move netdev_budget and netdev_budget to net_hotdata
>   net: move netdev_tstamp_prequeue into net_hotdata
>   net: move ptype_all into net_hotdata
>   net: move netdev_max_backlog to net_hotdata
>   net: move ip_packet_offload and ipv6_packet_offload to net_hotdata
>   net: move tcpv4_offload and tcpv6_offload to net_hotdata
>   net: move dev_tx_weight to net_hotdata
>   net: move dev_rx_weight to net_hotdata
>   net: move skbuff_cache(s) to net_hotdata
>   udp: move udpv4_offload and udpv6_offload to net_hotdata
>   ipv6: move tcpv6_protocol and udpv6_protocol to net_hotdata
>   inet: move tcp_protocol and udp_protocol to net_hotdata
>   inet: move inet_ehash_secret and udp_ehash_secret into net_hotdata
>   ipv6: move inet6_ehash_secret and udp6_ehash_secret into net_hotdata
>   ipv6: move tcp_ipv6_hash_secret and udp_ipv6_hash_secret to
>     net_hotdata
>   net: introduce include/net/rps.h
>   net: move rps_sock_flow_table to net_hotdata
>
>  drivers/net/ethernet/intel/ice/ice_arfs.c     |   1 +
>  .../net/ethernet/mellanox/mlx4/en_netdev.c    |   1 +
>  .../net/ethernet/mellanox/mlx5/core/en_arfs.c |   1 +
>  drivers/net/ethernet/sfc/rx_common.c          |   1 +
>  drivers/net/ethernet/sfc/siena/rx_common.c    |   1 +
>  drivers/net/tun.c                             |   1 +
>  include/linux/netdevice.h                     |  88 ------------
>  include/linux/skbuff.h                        |   1 -
>  include/net/gro.h                             |   5 +-
>  include/net/hotdata.h                         |  52 ++++++++
>  include/net/protocol.h                        |   3 +
>  include/net/rps.h                             | 125 ++++++++++++++++++
>  include/net/sock.h                            |  35 -----
>  kernel/bpf/cpumap.c                           |   4 +-
>  net/bpf/test_run.c                            |   4 +-
>  net/core/Makefile                             |   1 +
>  net/core/dev.c                                |  58 +++-----
>  net/core/dev.h                                |   3 -
>  net/core/gro.c                                |  15 +--
>  net/core/gro_cells.c                          |   3 +-
>  net/core/gso.c                                |   4 +-
>  net/core/hotdata.c                            |  22 +++
>  net/core/net-procfs.c                         |   7 +-
>  net/core/net-sysfs.c                          |   1 +
>  net/core/skbuff.c                             |  44 +++---
>  net/core/sysctl_net_core.c                    |  25 ++--
>  net/core/xdp.c                                |   5 +-
>  net/ipv4/af_inet.c                            |  49 +++----
>  net/ipv4/inet_hashtables.c                    |   3 +-
>  net/ipv4/tcp.c                                |   1 +
>  net/ipv4/tcp_offload.c                        |  17 ++-
>  net/ipv4/udp.c                                |   2 -
>  net/ipv4/udp_offload.c                        |  17 ++-
>  net/ipv6/af_inet6.c                           |   1 +
>  net/ipv6/inet6_hashtables.c                   |   8 +-
>  net/ipv6/ip6_offload.c                        |  18 +--
>  net/ipv6/tcp_ipv6.c                           |  17 +--
>  net/ipv6/tcpv6_offload.c                      |  16 +--
>  net/ipv6/udp.c                                |  19 ++-
>  net/ipv6/udp_offload.c                        |  21 ++-
>  net/sched/sch_generic.c                       |   3 +-
>  net/sctp/socket.c                             |   1 +
>  net/xfrm/espintcp.c                           |   4 +-
>  net/xfrm/xfrm_input.c                         |   3 +-
>  44 files changed, 391 insertions(+), 320 deletions(-)
>  create mode 100644 include/net/hotdata.h
>  create mode 100644 include/net/rps.h
>  create mode 100644 net/core/hotdata.c
>
> --
> 2.44.0.278.ge034bb2e1d-goog
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ