linux_dsm_epyc7002/Documentation/networking
David Ahern 9ab948a91b ipv4: Allow amount of dirty memory from fib resizing to be controllable
fib_trie implementation calls synchronize_rcu when a certain amount of
pages are dirty from freed entries. The number of pages was determined
experimentally in 2009 (commit c3059477fc).

At the current setting, synchronize_rcu is called often -- 51 times in a
second in one test with an average of an 8 msec delay adding a fib entry.
The total impact is a lot of slow down modifying the fib. This is seen
in the output of 'time' - the difference between real time and sys+user.
For example, using 720,022 single path routes and 'ip -batch'[1]:

    $ time ./ip -batch ipv4/routes-1-hops
    real    0m14.214s
    user    0m2.513s
    sys     0m6.783s

So roughly 35% of the actual time to install the routes is from the ip
command getting scheduled out, most notably due to synchronize_rcu (this
is observed using 'perf sched timehist').

This patch makes the amount of dirty memory configurable between 64k where
the synchronize_rcu is called often (small, low end systems that are memory
sensitive) to 64M where synchronize_rcu is called rarely during a large
FIB change (for high end systems with lots of memory). The default is 512kB
which corresponds to the current setting of 128 pages with a 4kB page size.

As an example, at 16MB the worst interval shows 4 calls to synchronize_rcu
in a second blocking for up to 30 msec in a single instance, and a total
of almost 100 msec across the 4 calls in the second. The trade off is
allowing FIB entries to consume more memory in a given time window but
but with much better fib insertion rates (~30% increase in prefixes/sec).
With this patch and net.ipv4.fib_sync_mem set to 16MB, the same batch
file runs in:

    $ time ./ip -batch ipv4/routes-1-hops
    real    0m9.692s
    user    0m2.491s
    sys     0m6.769s

So the dead time is reduced to about 1/2 second or <5% of the real time.

[1] 'ip' modified to not request ACK messages which improves route
    insertion times by about 20%

Signed-off-by: David Ahern <dsahern@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2019-03-21 13:29:53 -07:00
..
caif
device_drivers Documentation: fix some freescale dpio-driver.rst warnings 2019-02-11 21:29:02 -08:00
dsa Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2019-02-24 12:06:19 -08:00
mac80211_hwsim mac80211_hwsim: suggest nl80211 instead of wext driver in documentation 2016-10-17 11:38:01 +02:00
6lowpan.txt docs: networking: fix minor typos in various documentation files 2018-06-04 17:21:28 -04:00
6pack.txt
af_xdp.rst xsk: add FAQ to facilitate for first time users 2019-02-25 23:21:42 +01:00
alias.rst docs: networking: Convert alias.txt to rst 2018-07-18 15:28:27 -07:00
altera_tse.txt
arcnet-hardware.txt
arcnet.txt
atm.txt
ax25.txt
batman-adv.rst batman-adv: Add SPDX license identifier to batman-adv.rst 2017-12-15 17:22:46 +01:00
baycom.txt
bonding.txt bonding: Fix a typo in bonding.txt 2018-07-16 13:32:12 -07:00
bridge.rst docs: networking: Convert bridge.txt to rst 2018-07-18 15:28:27 -07:00
can_ucan_protocol.rst can: ucan: add driver for Theobroma Systems UCAN devices 2018-07-27 10:40:16 +02:00
can.rst docs: can.rst: fix a footnote reference 2018-06-15 12:48:59 -03:00
cdc_mbim.txt Documentation: fix usb related doc refs 2017-10-12 11:15:48 -06:00
checksum-offloads.rst doc: networking: shorten the main title in offloads documents 2019-01-07 15:27:51 -07:00
conf.py docs-rst: convert networking book to ReST 2017-05-16 08:44:13 -03:00
cops.txt
cxacru-cf.py
cxacru.txt
dccp.txt
dctcp.txt
decnet.txt
defza.txt FDDI: defza: Add support for DEC FDDIcontroller 700 TURBOchannel adapter 2018-10-15 21:46:06 -07:00
devlink-health.txt devlink: Add Documentation/networking/devlink-health.txt 2019-02-07 10:34:29 -08:00
devlink-info-versions.rst devlink: add a generic board.manufacture version name 2019-02-11 20:39:56 -08:00
devlink-params-bnxt.txt devlink: Add Documentation/networking/devlink-params-bnxt.txt 2018-10-04 13:49:43 -07:00
devlink-params-mlxsw.txt mlxsw: spectrum: add "acl_region_rehash_interval" devlink param 2019-02-08 15:02:50 -08:00
devlink-params.txt devlink: Add 'fw_load_policy' generic parameter 2018-12-03 13:55:43 -08:00
dns_resolver.txt doc: ReSTify keys-request-key.txt 2017-05-18 10:33:51 -06:00
driver.txt
eql.txt
failover.rst net: Introduce generic failover module 2018-05-28 22:59:54 -04:00
fib_trie.txt
filter.txt docs/bpf: minor casing/punctuation fixes 2019-03-02 00:40:04 +01:00
fore200e.txt
framerelay.txt
gen_stats.txt
generic_netlink.txt
generic-hdlc.txt
gtp.txt docs: networking: fix minor typos in various documentation files 2018-06-04 17:21:28 -04:00
hinic.txt net-next/hinic: Initialize hw interface 2017-08-22 10:48:52 -07:00
ieee802154.rst doc: net: ieee802154: introduce IEEE 802.15.4 subsystem doc in rst style 2019-03-01 17:03:00 -08:00
ila.txt docs: networking: fix minor typos in various documentation files 2018-06-04 17:21:28 -04:00
index.rst A fairly routine cycle for docs - lots of typo fixes, some new documents, 2019-03-09 09:56:17 -08:00
ip_dynaddr.txt
ip-sysctl.txt ipv4: Allow amount of dirty memory from fib resizing to be controllable 2019-03-21 13:29:53 -07:00
ipddp.txt
iphase.txt
ipsec.txt docs: networking: fix minor typos in various documentation files 2018-06-04 17:21:28 -04:00
ipv6.txt
ipvlan.txt docs: networking: fix minor typos in various documentation files 2018-06-04 17:21:28 -04:00
ipvs-sysctl.txt ipvs: Document sysctl pmtu_disc 2017-03-16 13:33:39 +01:00
kapi.rst sfp: add documentation for kernel APIs 2017-12-05 11:16:19 -05:00
kcm.txt docs: networking: fix minor typos in various documentation files 2018-06-04 17:21:28 -04:00
l2tp.txt net: l2tp: deprecate PPPOL2TP_MSG_* in favour of L2TP_MSG_* 2016-12-10 23:29:11 -05:00
lapb-module.txt
ltpc.txt
mac80211-auth-assoc-deauth.txt
mac80211-injection.txt
mpls-sysctl.txt mpls: allow TTL propagation from IP packets to be configured 2017-03-13 15:29:22 -07:00
msg_zerocopy.rst doc: fix link to MSG_ZEROCOPY patchset 2019-03-18 09:50:21 -07:00
multiqueue.txt
net_dim.txt Documentation/networking: Add net DIM documentation 2018-03-22 14:50:44 -04:00
net_failover.rst docs: networking: Fix failover build warnings 2018-07-16 11:23:54 -07:00
netconsole.txt docs: fix locations of several documents that got moved 2016-10-24 08:12:35 -02:00
netdev-FAQ.rst Documentation: networking: Update netdev-FAQ regarding patches 2019-03-18 20:09:58 -07:00
netdev-features.txt docs-networking: fix typo in define 2018-11-21 10:30:30 -08:00
netdevices.txt
netfilter-sysctl.txt netfilter: allow logging from non-init namespaces 2017-02-02 14:31:58 +01:00
netif-msg.txt
nf_conntrack-sysctl.txt netfilter: conntrack: register sysctl table for gre 2018-12-21 00:51:25 +01:00
nf_flowtable.txt netfilter: add flowtable documentation 2018-03-30 11:04:41 +02:00
nfc.txt
openvswitch.txt
operstates.txt Documentation: bring operstate documentation up-to-date 2019-02-11 12:38:51 -08:00
packet_mmap.txt doc: remove out of date links and info from packet mmap 2018-03-16 10:48:52 -04:00
phonet.txt
phy.rst Documentation: net: phy: switch documentation to rst format 2019-01-26 09:16:55 -08:00
pktgen.txt Documentation/pktgen: Clearify how-to use pktgen samples 2018-01-24 15:03:36 -05:00
PLIP.txt
ppp_generic.txt ppp: remove the PPPIOCDETACH ioctl 2018-05-24 22:55:07 -04:00
proc_net_tcp.txt
radiotap-headers.txt
ray_cs.txt
rds.txt
regulatory.txt cfg80211: reg: remove support for built-in regdb 2017-10-11 13:18:51 +02:00
rxrpc.txt Revert "rxrpc: Allow failed client calls to be retried" 2019-01-15 21:33:36 -08:00
scaling.rst doc: networking: integrate scaling document into doc tree 2019-01-20 19:10:49 -07:00
sctp.txt
secid.txt
seg6-sysctl.txt ipv6: sr: add documentation file for per-interface sysctls 2016-11-09 20:40:06 -05:00
segmentation-offloads.rst doc: networking: shorten the main title in offloads documents 2019-01-07 15:27:51 -07:00
sfp-phylink.rst doc: add phylink documentation to the networking book 2019-02-24 12:39:45 -08:00
skfp.txt
snmp_counter.rst networking: fix snmp_counter.rst Doc. Warnings 2019-03-17 19:37:08 -07:00
strparser.txt strparser: Corrected typo in documentation. 2018-06-24 16:40:20 +09:00
switchdev.txt switchdev: Remove unused transaction item queue 2019-03-01 21:35:19 -08:00
tc-actions-env-rules.txt
tcp-thin.txt
team.txt
timestamping.txt socket: Update timestamping Documentation 2019-02-03 11:17:31 -08:00
tls.txt tls: Add receive path documentation 2018-03-23 12:25:54 -04:00
tproxy.txt netfilter: doc: Add nf_tables part in tproxy.txt 2018-08-16 19:37:07 +02:00
tuntap.txt
udplite.txt
vrf.txt net: provide a sysctl raw_l3mdev_accept for raw socket lookup with VRFs 2018-11-07 16:12:38 -08:00
vxlan.txt
x25-iface.txt
x25.txt
xfrm_device.txt net: switch secpath to use skb extension infrastructure 2018-12-19 11:21:38 -08:00
xfrm_proc.txt xfrm: update the stats documentation 2017-12-22 06:45:48 +01:00
xfrm_sync.txt
xfrm_sysctl.txt
z8530book.rst docs-rst: convert scsi DocBook to ReST 2017-05-16 08:44:15 -03:00
z8530drv.txt