af_packet: Avoid cache line dirtying
Subsystems (3)
PATCH 1/1 af_packet: Avoid cache line dirtying
While doing multiple captures, I found af_packet was dirtying cache line containing its prot_hook.
This slow down machines where several cpus are necessary to handle capture traffic, as each prot_hook is traversed for each packet coming in or out the host.
This patches moves "struct packet_type prot_hook" to the end of packet_sock, and uses a ____cacheline_aligned_in_smp to make sure this remains shared by all cpus.
---
net/packet/af_packet.c +1 -1
@@ -188,7 +188,6 @@ struct packet_sock {struct packet_ring_buffer tx_ring;int copy_thresh;#endif -struct packet_type prot_hook;spinlock_t bind_lock;struct mutex pg_vec_lock; unsigned int running:1, /* prot_hook is attached*/
@@ -204,6 +203,7 @@ struct packet_sock {unsigned int tp_reserve; unsigned int tp_loss:1;#endif +struct packet_type prot_hook____cacheline_aligned_in_smp ; };struct packet_skb_cb {
From: Eric Dumazet <[email protected]>
Date: Fri, 16 Oct 2009 16:02:20 +0200
Quoted 7 lines
While doing multiple captures, I found
af_packetwas dirtying cache line containing itsprot_hook.This slow down machines where several cpus are necessary to handle capture traffic, as each
prot_hookis traversed for each packet coming in or out the host.
Quoted 5 lines
This patches moves "struct
packet_typeprot_hook" to the end ofpacket_sock, and uses a____cacheline_aligned_in_smpto make sure this remains shared by all cpus.Signed-off-by Eric Dumazet <[email protected]>
Applied.