Skip to contentSkip to conversation

reduce sizeof(struct inet_peer) from 128 to 64 bytes on 64bits architectures

PATCH In review Eric Dumazet 3 participants 6 messages Mar 16, 2005 – Mar 18, 2005

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 reduce sizeof(struct inet_peer) from 128 to 64 bytes on 64bits architectures

Resent with diff file not tab/space mangled :(

As peer_cachep uses kmem_cache_create("inet_peer_cache", ... SLAB_HWCACHE_ALIGN ...), better try to use exactly 64 bytes instead of 72 for struct inet_peer.

This also means that this structure fits in one cache line on x86_64.

Thank you
Eric Dumazet

include/net/inetpeer.h +1 -1
diff -Nru linux-2.6.11/include/net/inetpeer.h linux-2.6.11-ed/include/net/inetpeer.h
@@ -19,9 +19,9 @@
 {
 	struct inet_peer	*avl_left, *avl_right;
 	struct inet_peer	*unused_next, **unused_prevp;
-	atomic_t		refcnt;
 	unsigned long		dtime;		/* the time of last use of not
 						 * referenced entries */
+	atomic_t		refcnt;
 	__u32			v4daddr;	/* peer's address */
 	__u16			avl_height;
 	__u16			ip_id_count;	/* IP ID for the next packet */
#1 lore raw
Quoted 1 line · On Thu, 17 Mar 2005 00:38:48 +0100 Eric Dumazet <[email protected]> wrote:

Resent with diff file not tab/space mangled :(

Patch applied, thanks Eric.

#2 lore raw

PATCH 1/1 /proc/net/stat/rt_cache has a wrong header

In reply to Eric Dumazet

Hello

The header of /proc/net/stat/rt_cache misses the 'in_slow_mc' field. This patch adds it.

Thank you

Eric Dumazet

net/ipv4/route.c +1 -1
@@ -393,7 +393,7 @@
 	struct rt_cache_stat *st = v;
 
 	if (v == SEQ_START_TOKEN) {
-		seq_printf(seq, "entries  in_hit in_slow_tot in_no_route in_brd in_martian_dst in_martian_src  out_hit out_slow_tot out_slow_mc  gc_total gc_ignored gc_goal_miss gc_dst_overflow in_hlist_search out_hlist_search\n");
+		seq_printf(seq, "entries  in_hit in_slow_tot in_slow_mc in_no_route in_brd in_martian_dst in_martian_src  out_hit out_slow_tot out_slow_mc  gc_total gc_ignored gc_goal_miss gc_dst_overflow in_hlist_search out_hlist_search\n");
 		return 0;
 	}
 	
#3 lore raw

Re: [PATCH] /proc/net/stat/rt_cache has a wrong header

Quoted 4 lines · On Fri, 18 Mar 2005 13:05:44 +0100 Eric Dumazet <[email protected]> wrote:

Hello

The header of /proc/net/stat/rt_cache misses the 'in_slow_mc' field. This patch adds it.

Current iproute2 tools adapt to additional fields, but wouldn't this be breaking the API for other tools? (if any)

#4 lore raw

Re: [PATCH] /proc/net/stat/rt_cache has a wrong header

Quoted 4 lines · Stephen Hemminger

On Fri, 18 Mar 2005 13:05:44 +0100
Eric Dumazet <[email protected]> wrote:

Quoted 10 lines
Quoted 4 lines

Hello

The header of /proc/net/stat/rt_cache misses the 'in_slow_mc' field. This patch adds it.

Current iproute2 tools adapt to additional fields, but wouldn't this be breaking the API for other tools? (if any)

AFAIK the old stat file (/proc/net/rt_cache_acct) was OK.

During the conversion to /proc/net/stat/rt_cache done in late 2.6.XX version, a bug was introduced, in kernel and also in iproute2.

The API if fine, and my patch doesnt change it.

Eric

#5 lore raw

Re: [PATCH] /proc/net/stat/rt_cache has a wrong header

Quoted 9 lines · Eric Dumazet

AFAIK the old stat file (/proc/net/rt_cache_acct) was OK.

During the conversion to /proc/net/stat/rt_cache done in late 2.6.XX version, a bug was introduced, in kernel and also in iproute2.

The API if fine, and my patch doesnt change it.

Eric

I should give more explanations about the bug :

Each line contains 17 fields.

But the header contains only 16 fields, one column (in_slow_mc, the 4th field) was forgotten.

Thus rtstat (from last iproute2) gives wrong information starting at 4th column.

Eric