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. Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
		
							parent
							
								
									7b6856a029
								
							
						
					
					
						commit
						94b059520d
					
				| @ -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 { | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user