forked from luck/tmp_suning_uos_patched
7adc3830f9
If all of the entropy is in the local and foreign addresses, but xor'ing together would cancel out that entropy, the current hash performs poorly. Suggested by Cosmin Ratiu: Basically, the situation is as follows: There is a client machine and a server machine. Both create 15000 virtual interfaces, open up a socket for each pair of interfaces and do SIP traffic. By profiling I noticed that there is a lot of time spent walking the established hash chains with this particular setup. The addresses were distributed like this: client interfaces were 198.18.0.1/16 with increments of 1 and server interfaces were 198.18.128.1/16 with increments of 1. As I said, there were 15000 interfaces. Source and destination ports were 5060 for each connection. So in this case, ports don't matter for hashing purposes, and the bits from the address pairs used cancel each other, meaning there are no differences in the whole lot of pairs, so they all end up in the same hash chain. Signed-off-by: David S. Miller <davem@davemloft.net> |
||
---|---|---|
.. | ||
9p | ||
bluetooth | ||
irda | ||
iucv | ||
netfilter | ||
netns | ||
sctp | ||
tc_act | ||
tipc | ||
act_api.h | ||
addrconf.h | ||
af_rxrpc.h | ||
af_unix.h | ||
ah.h | ||
arp.h | ||
atmclip.h | ||
ax25.h | ||
ax88796.h | ||
cfg80211.h | ||
checksum.h | ||
cipso_ipv4.h | ||
compat.h | ||
datalink.h | ||
dn_dev.h | ||
dn_fib.h | ||
dn_neigh.h | ||
dn_nsp.h | ||
dn_route.h | ||
dn.h | ||
dsfield.h | ||
dst.h | ||
esp.h | ||
fib_rules.h | ||
flow.h | ||
gen_stats.h | ||
genetlink.h | ||
icmp.h | ||
ieee80211_crypt.h | ||
ieee80211_radiotap.h | ||
ieee80211.h | ||
ieee80211softmac_wx.h | ||
ieee80211softmac.h | ||
if_inet6.h | ||
inet_common.h | ||
inet_connection_sock.h | ||
inet_ecn.h | ||
inet_frag.h | ||
inet_hashtables.h | ||
inet_sock.h | ||
inet_timewait_sock.h | ||
inet6_connection_sock.h | ||
inet6_hashtables.h | ||
inetpeer.h | ||
ip_fib.h | ||
ip_vs.h | ||
ip.h | ||
ip6_checksum.h | ||
ip6_fib.h | ||
ip6_route.h | ||
ip6_tunnel.h | ||
ipcomp.h | ||
ipconfig.h | ||
ipip.h | ||
ipv6.h | ||
ipx.h | ||
iw_handler.h | ||
lapb.h | ||
llc_c_ac.h | ||
llc_c_ev.h | ||
llc_c_st.h | ||
llc_conn.h | ||
llc_if.h | ||
llc_pdu.h | ||
llc_s_ac.h | ||
llc_s_ev.h | ||
llc_s_st.h | ||
llc_sap.h | ||
llc.h | ||
mac80211.h | ||
mip6.h | ||
ndisc.h | ||
neighbour.h | ||
net_namespace.h | ||
netdma.h | ||
netevent.h | ||
netlabel.h | ||
netlink.h | ||
netrom.h | ||
nexthop.h | ||
p8022.h | ||
pkt_cls.h | ||
pkt_sched.h | ||
protocol.h | ||
psnap.h | ||
raw.h | ||
rawv6.h | ||
red.h | ||
request_sock.h | ||
rose.h | ||
route.h | ||
rtnetlink.h | ||
sch_generic.h | ||
scm.h | ||
slhc_vj.h | ||
snmp.h | ||
sock.h | ||
syncppp.h | ||
tcp_states.h | ||
tcp.h | ||
timewait_sock.h | ||
transp_v6.h | ||
udp.h | ||
udplite.h | ||
wext.h | ||
wireless.h | ||
x25.h | ||
x25device.h | ||
xfrm.h |