Zhang Yanmin
f1dd9c379c
[NET]: Fix tbench regression in 2.6.25-rc1
...
Comparing with kernel 2.6.24, tbench result has regression with
2.6.25-rc1.
1) On 2 quad-core processor stoakley: 4%.
2) On 4 quad-core processor tigerton: more than 30%.
bisect located below patch.
b4ce92775c is first bad commit
commit b4ce92775c
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date: Tue Nov 13 21:33:32 2007 -0800
[IPV6]: Move nfheader_len into rt6_info
The dst member nfheader_len is only used by IPv6. It's also currently
creating a rather ugly alignment hole in struct dst. Therefore this patch
moves it from there into struct rt6_info.
Above patch changes the cache line alignment, especially member
__refcnt. I did a testing by adding 2 unsigned long pading before
lastuse, so the 3 members, lastuse/__refcnt/__use, are moved to next
cache line. The performance is recovered.
I created a patch to rearrange the members in struct dst_entry.
With Eric and Valdis Kletnieks's suggestion, I made finer arrangement.
1) Move tclassid under ops in case CONFIG_NET_CLS_ROUTE=y. So
sizeof(dst_entry)=200 no matter if CONFIG_NET_CLS_ROUTE=y/n. I
tested many patches on my 16-core tigerton by moving tclassid to
different place. It looks like tclassid could also have impact on
performance. If moving tclassid before metrics, or just don't move
tclassid, the performance isn't good. So I move it behind metrics.
2) Add comments before __refcnt.
On 16-core tigerton:
If CONFIG_NET_CLS_ROUTE=y, the result with below patch is about 18%
better than the one without the patch;
If CONFIG_NET_CLS_ROUTE=n, the result with below patch is about 30%
better than the one without the patch.
With 32bit 2.6.25-rc1 on 8-core stoakley, the new patch doesn't
introduce regression.
Thank Eric, Valdis, and David!
Signed-off-by: Zhang Yanmin <yanmin.zhang@intel.com>
Acked-by: Eric Dumazet <dada1@cosmosbay.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2008-03-12 22:52:37 -07:00
..
9p
9p: add support for sticky bit
2008-02-06 19:25:06 -06:00
bluetooth
bluetooth: Make hci_sock_cleanup() return void
2008-03-05 18:47:03 -08:00
irda
irda: replace __inline with inline
2008-03-05 18:37:16 -08:00
iucv
[AF_IUCV]: postpone receival of iucv-packets
2007-10-10 16:54:51 -07:00
netfilter
[NETFILTER]: nf_conntrack: replace horrible hack with ksize()
2008-03-10 16:43:41 -07:00
netns
[NETFILTER]: arp_tables: per-netns arp_tables FILTER
2008-01-31 19:27:41 -08:00
sctp
[SCTP]: Update AUTH structures to match declarations in draft-16.
2008-02-28 16:45:04 -05:00
tc_act
[PKT_SCHED]: Add stateless NAT
2007-10-10 16:53:11 -07:00
tipc
[TIPC]: Kill unused static inline (x5)
2008-02-07 18:17:13 -08:00
act_api.h
[NET_SCHED]: act_api: use PTR_ERR in tcf_action_init/tcf_action_get
2008-01-28 15:11:17 -08:00
addrconf.h
[IPV4]: Enable use of 240/4 address space.
2008-01-28 15:08:44 -08:00
af_rxrpc.h
[AF_RXRPC]: Add an interface to the AF_RXRPC module for the AFS filesystem to use
2007-04-26 15:50:17 -07:00
af_unix.h
[AF_UNIX]: Remove unused declaration of sysctl_unix_max_dgram_qlen.
2008-01-28 14:57:13 -08:00
ah.h
[IPSEC]: Get rid of ipv6_{auth,esp,comp}_hdr
2007-10-10 16:55:55 -07:00
arp.h
[NETFILTER]: ebtables: remove casts, use consts
2008-01-31 19:27:33 -08:00
atmclip.h
ax25.h
[AX25] ax25_ds_timer: use mod_timer instead of add_timer
2008-02-12 17:53:34 -08:00
ax88796.h
ax88796: add 93cx6 eeprom support
2007-10-10 16:53:56 -07:00
cfg80211.h
cfg80211/nl80211: implement station attribute retrieval
2008-01-28 14:59:52 -08:00
checksum.h
[NET]: Move netfilter checksum helpers to net/core/utils.c
2008-01-28 14:55:14 -08:00
cipso_ipv4.h
[NetLabel]: consolidate the struct socket/sock handling to just struct sock
2007-06-08 13:33:09 -07:00
compat.h
datalink.h
dn.h
[DECNET]: Another unnecessary net/tcp.h inclusion in net/dn.h
2007-07-10 23:02:12 -07:00
dn_dev.h
dn_fib.h
dn_neigh.h
dn_nsp.h
dn_route.h
[NET]: Wrap netdevice hardware header creation.
2007-10-10 16:52:50 -07:00
dsfield.h
[NET]: Constify include/net/dsfield.h
2008-01-28 14:55:58 -08:00
dst.h
[NET]: Fix tbench regression in 2.6.25-rc1
2008-03-12 22:52:37 -07:00
esp.h
[IPSEC]: Use crypto_aead and authenc in ESP
2008-01-31 19:27:02 -08:00
fib_rules.h
[NETNS]: Process FIB rule action in the context of the namespace.
2008-01-28 15:08:14 -08:00
flow.h
[IPV4]: Remove unused multipath cached routing defintion in net/flow.h
2008-01-28 15:00:20 -08:00
gen_stats.h
[NET_SCHED]: Convert packet schedulers from rtnetlink to new netlink API
2008-01-28 15:11:10 -08:00
genetlink.h
[GENETLINK]: Dynamic multicast groups.
2007-07-18 15:47:52 -07:00
icmp.h
[IPV4]: Add ICMPMsgStats MIB (RFC 4293)
2007-10-10 16:51:28 -07:00
ieee80211.h
ieee80211: fix misannotations
2008-01-28 15:08:48 -08:00
ieee80211_crypt.h
[PATCH] Update my email address from jkmaline@cc.hut.fi to j@w1.fi
2007-04-28 11:01:01 -04:00
ieee80211_radiotap.h
[MAC80211]: Add get_unaligned to ieee80211_get_radiotap_len
2007-10-10 16:47:40 -07:00
ieee80211softmac.h
[IEEE80211]: Fix softmac lockdep reports.
2007-10-10 16:52:22 -07:00
ieee80211softmac_wx.h
if_inet6.h
[IPV6]: Reorg struct ifmcaddr6 to save some bytes
2008-02-03 04:28:54 -08:00
inet6_connection_sock.h
inet6_hashtables.h
[SOCK] proto: Add hashinfo member to struct proto
2008-02-03 04:28:52 -08:00
inet_common.h
[INET]: Remove leftover prototypes from include/net/inet_common.h
2007-11-12 21:02:51 -08:00
inet_connection_sock.h
[SOCK] proto: Add hashinfo member to struct proto
2008-02-03 04:28:52 -08:00
inet_ecn.h
[INET]: Give outer DSCP directly to ip*_copy_dscp
2008-01-28 14:53:45 -08:00
inet_frag.h
[NETNS][FRAGS]: Make the pernet subsystem for fragments.
2008-01-28 15:10:40 -08:00
inet_hashtables.h
[INET]: Fix accidentally broken inet(6)_hash_connect's port offset calculations.
2008-02-05 03:14:44 -08:00
inet_sock.h
[TCP]: Improve ipv4 established hash function.
2008-03-04 14:28:41 -08:00
inet_timewait_sock.h
[INET_TIMEWAIT_SOCK]: Reorganize struct inet_timewait_sock to save some bytes
2008-02-03 04:28:54 -08:00
inetpeer.h
[INET]: Use list_head-s in inetpeer.c
2007-11-12 21:27:28 -08:00
ip.h
[NETNS][FRAGS]: Make the mem counter per-namespace.
2008-01-28 15:10:36 -08:00
ip6_checksum.h
ip6_fib.h
[IPV6] Minor cleanup: remove unused definitions in net/ip6_fib.h
2008-02-07 18:11:49 -08:00
ip6_route.h
[IPV6] Minor clenup: remove two unused definitions in net/ip6_route.h
2008-02-07 18:10:19 -08:00
ip6_tunnel.h
[IP_TUNNEL]: Don't limit the number of tunnels with generic name explicitly.
2008-02-23 20:19:20 -08:00
ip_fib.h
[IPV4]: Fix compile error building without CONFIG_FS_PROC
2008-02-05 02:54:16 -08:00
ip_vs.h
[IPVS]: Switch to using ctl_paths.
2008-01-28 15:01:08 -08:00
ipcomp.h
[IPSEC]: Get rid of ipv6_{auth,esp,comp}_hdr
2007-10-10 16:55:55 -07:00
ipconfig.h
ipip.h
[IPV4]: Add ip_local_out
2008-01-28 14:53:47 -08:00
ipv6.h
[IPV6]: Fix sysctl compilation error.
2008-02-05 02:57:59 -08:00
ipx.h
iw_handler.h
[NL80211]: add netlink interface to cfg80211
2007-10-10 16:52:14 -07:00
lapb.h
llc.h
llc_c_ac.h
llc_c_ev.h
llc_c_st.h
llc_conn.h
[NET]: Make socket creation namespace safe.
2007-10-10 16:49:07 -07:00
llc_if.h
llc_pdu.h
llc_s_ac.h
llc_s_ev.h
llc_s_st.h
llc_sap.h
mac80211.h
mac80211: add unified BSS configuration
2008-01-28 15:09:43 -08:00
mip6.h
[IPV6] MIP6: Loadable module support for MIPv6.
2007-07-10 22:15:42 -07:00
ndisc.h
[IPV6]: remove unused method declaration (net/ndisc.h).
2008-02-12 22:06:53 -08:00
neighbour.h
[ARP]: neigh_parms_put(destroy) are essentially local to core/neighbour.c.
2008-01-28 15:02:11 -08:00
net_namespace.h
[NET]: Make /proc/net a symlink on /proc/self/net (v3)
2008-03-07 11:08:40 -08:00
netdma.h
netevent.h
[NET]: Remove unnecessary inclusion of dst.h
2008-01-28 14:53:38 -08:00
netlabel.h
NetLabel: introduce a new kernel configuration API for NetLabel
2008-02-05 09:44:20 -08:00
netlink.h
[NETLINK]: Add nla_append()
2008-01-28 15:11:09 -08:00
netrom.h
nexthop.h
p8022.h
pkt_cls.h
[NET_SCHED]: Constify struct tcf_ext_map
2008-01-31 19:28:34 -08:00
pkt_sched.h
[NET_SCHED]: Convert packet schedulers from rtnetlink to new netlink API
2008-01-28 15:11:10 -08:00
protocol.h
[IPV6]: make inet6_register_protosw to return an error code
2008-01-28 14:57:12 -08:00
psnap.h
raw.h
[RAW]: Wrong content of the /proc/net/raw6.
2008-01-31 19:27:26 -08:00
rawv6.h
[IPv6] RAW: Compact the API for the kernel
2008-01-28 14:54:29 -08:00
red.h
request_sock.h
[INET]: Fix potential kfree on vmalloc-ed area of request_sock_queue
2007-11-15 02:57:06 -08:00
rose.h
[ROSE]: Fix rose.ko oops on unload
2007-10-07 23:44:17 -07:00
route.h
[IPV4] route cache: Introduce rt_genid for smooth cache invalidation
2008-01-31 19:28:27 -08:00
rtnetlink.h
[NET]: Make the device list and device lookups per namespace.
2007-10-10 16:49:10 -07:00
sch_generic.h
[NET_SCHED]: Convert classifiers from rtnetlink to new netlink API
2008-01-28 15:11:11 -08:00
scm.h
pid namespaces: changes to show virtual ids to user
2007-10-19 11:53:40 -07:00
slhc_vj.h
snmp.h
[XFRM]: Define packet dropping statistics.
2008-01-28 14:59:38 -08:00
sock.h
net: fix kernel-doc warnings in header files
2008-02-18 20:52:13 -08:00
syncppp.h
tcp.h
[TCP]: Uninline tcp_is_cwnd_limited
2008-01-28 15:01:48 -08:00
tcp_states.h
timewait_sock.h
transp_v6.h
[IPV6]: make the protocol initialization to return an error code
2008-01-28 14:57:13 -08:00
udp.h
[NET]: prot_inuse cleanups and optimizations
2008-01-28 15:00:36 -08:00
udplite.h
[UDP]: Restore missing inDatagrams increments
2008-01-28 14:56:33 -08:00
wext.h
[NET]: Make the device list and device lookups per namespace.
2007-10-10 16:49:10 -07:00
wireless.h
[WIRELESS] cfg80211: New wireless config infrastructure.
2007-04-25 22:29:41 -07:00
x25.h
x25device.h
xfrm.h
[IPSEC]: Fix bogus usage of u64 on input sequence number
2008-02-12 22:50:35 -08:00