linux/net/netfilter/ipvs
Marco Angaroni 013b042465 ipvs: optimize release of connections in OPS mode
One-packet-scheduling is the most expensive mode in IPVS from
performance point of view: for each packet to be processed a new
connection data structure is created and, after packet is sent,
deleted by starting a new timer set to expire immediately.

SIP persistent-engine needs OPS mode to have Call-ID based load
balancing, so OPS mode performance has negative impact in SIP
protocol load balancing.

This patch aims to improve performance of OPS mode by means of the
following changes in the release mechanism of OPS connections:
a) call expire callback ip_vs_conn_expire() directly instead of
   starting a timer programmed to fire immediately.
b) avoid call_rcu() overhead inside expire callback, since OPS
   connection are not inserted in the hash-table and last just the
   time to process the packet, hence there is no concurrent access
   to such data structures.

Signed-off-by: Marco Angaroni <marcoangaroni@gmail.com>
Acked-by: Julian Anastasov <ja@ssi.bg>
Signed-off-by: Simon Horman <horms@verge.net.au>
2016-04-20 12:34:17 +10:00
..
ip_vs_app.c netfilter: ipvs: avoid unused variable warnings 2016-02-18 09:17:58 +09:00
ip_vs_conn.c ipvs: optimize release of connections in OPS mode 2016-04-20 12:34:17 +10:00
ip_vs_core.c ipvs: handle connections started by real-servers 2016-04-20 12:34:17 +10:00
ip_vs_ctl.c ipvs: handle connections started by real-servers 2016-04-20 12:34:17 +10:00
ip_vs_dh.c ipvs: use correct address family in scheduler logs 2014-09-18 08:59:23 +09:00
ip_vs_est.c ipvs: Pass ipvs not net to ip_vs_estimator_net_init and ip_vs_estimator_cleanup 2015-09-24 09:34:39 +09:00
ip_vs_fo.c ipvs: use correct address family in scheduler logs 2014-09-18 08:59:23 +09:00
ip_vs_ftp.c ipvs: Remove net argument from ip_vs_tcp_conn_listen 2015-09-24 09:34:43 +09:00
ip_vs_lblc.c ipvs: Store ipvs not net in struct ip_vs_service 2015-09-24 09:34:33 +09:00
ip_vs_lblcr.c ipvs: Store ipvs not net in struct ip_vs_service 2015-09-24 09:34:33 +09:00
ip_vs_lc.c ipvs: use correct address family in scheduler logs 2014-09-18 08:59:23 +09:00
ip_vs_nfct.c ipvs: Pass ipvs not net to ip_vs_fill_conn 2015-09-24 09:34:33 +09:00
ip_vs_nq.c ipvs: use correct address family in scheduler logs 2014-09-18 08:59:23 +09:00
ip_vs_ovf.c ipvs: Add ovf scheduler 2015-08-21 09:08:39 -07:00
ip_vs_pe_sip.c ipvs: handle connections started by real-servers 2016-04-20 12:34:17 +10:00
ip_vs_pe.c netfilter: Deletion of unnecessary checks before two function calls 2014-11-20 13:08:43 +01:00
ip_vs_proto_ah_esp.c ipvs: Pass ipvs into .conn_schedule and ip_vs_try_to_schedule 2015-09-24 09:34:41 +09:00
ip_vs_proto_sctp.c sctp: Rename NETIF_F_SCTP_CSUM to NETIF_F_SCTP_CRC 2015-12-15 16:49:58 -05:00
ip_vs_proto_tcp.c ipvs: Remove net argument from ip_vs_tcp_conn_listen 2015-09-24 09:34:43 +09:00
ip_vs_proto_udp.c ipvs: Pass ipvs into .conn_schedule and ip_vs_try_to_schedule 2015-09-24 09:34:41 +09:00
ip_vs_proto.c ipvs: Pass ipvs not net to ip_vs_protocol_net_(init|cleanup) 2015-09-24 09:34:43 +09:00
ip_vs_rr.c ipvs: use correct address family in scheduler logs 2014-09-18 08:59:23 +09:00
ip_vs_sched.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf-next 2015-08-04 23:57:45 -07:00
ip_vs_sed.c ipvs: use correct address family in scheduler logs 2014-09-18 08:59:23 +09:00
ip_vs_sh.c ipvs: sh: support scheduling icmp/inverse packets consistently 2015-09-01 10:33:52 +09:00
ip_vs_sync.c ipvs: Pass ipvs not net to ip_vs_sync_net_cleanup 2015-09-24 09:34:38 +09:00
ip_vs_wlc.c ipvs: use correct address family in scheduler logs 2014-09-18 08:59:23 +09:00
ip_vs_wrr.c ipvs: use correct address family in scheduler logs 2014-09-18 08:59:23 +09:00
ip_vs_xmit.c net: remove skb_sender_cpu_clear() 2016-03-01 17:36:47 -05:00
Kconfig ipvs: Add ovf scheduler 2015-08-21 09:08:39 -07:00
Makefile ipvs: Add ovf scheduler 2015-08-21 09:08:39 -07:00