Re: [PATCH 8/9] add statistics

2008-01-12 Thread David Miller
From: Stephen Hemminger [EMAIL PROTECTED]
Date: Fri, 11 Jan 2008 22:45:21 -0800

 The FIB TRIE code has a bunch of statistics, but the code is hidden
 behind an ifdef that was never implemented. Since it was dead code,
 it was broken as well.
 
 This patch fixes that by making it a config option.
 
 Signed-off-by: Stephen Hemminger [EMAIL PROTECTED]

Applied, thanks.
--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 8/9] add statistics

2008-01-11 Thread Stephen Hemminger
The FIB TRIE code has a bunch of statistics, but the code is hidden
behind an ifdef that was never implemented. Since it was dead code,
it was broken as well.

This patch fixes that by making it a config option.

Signed-off-by: Stephen Hemminger [EMAIL PROTECTED]

--- a/net/ipv4/Kconfig  2008-01-11 22:17:11.0 -0800
+++ b/net/ipv4/Kconfig  2008-01-11 22:31:17.0 -0800
@@ -85,6 +85,13 @@ endchoice
 config IP_FIB_HASH
def_bool ASK_IP_FIB_HASH || !IP_ADVANCED_ROUTER
 
+config IP_FIB_TRIE_STATS
+   bool FIB TRIE statistics
+   depends on IP_FIB_TRIE
+   ---help---
+ Keep track of statistics on structure of FIB TRIE table.
+ Useful for testing and measuring TRIE performance.
+
 config IP_MULTIPLE_TABLES
bool IP: policy routing
depends on IP_ADVANCED_ROUTER
--- a/net/ipv4/fib_trie.c   2008-01-11 22:31:00.0 -0800
+++ b/net/ipv4/fib_trie.c   2008-01-11 22:31:56.0 -0800
@@ -82,7 +82,6 @@
 #include net/ip_fib.h
 #include fib_lookup.h
 
-#undef CONFIG_IP_FIB_TRIE_STATS
 #define MAX_STAT_DEPTH 32
 
 #define KEYLENGTH (8*sizeof(t_key))
@@ -2119,20 +2118,22 @@ static void trie_show_stats(struct seq_f
bytes += sizeof(struct node *) * pointers;
seq_printf(seq, Null ptrs: %u\n, stat-nullpointers);
seq_printf(seq, Total size: %u  kB\n, (bytes + 1023) / 1024);
+}
 
 #ifdef CONFIG_IP_FIB_TRIE_STATS
-   seq_printf(seq, Counters:\n-\n);
-   seq_printf(seq,gets = %d\n, t-stats.gets);
-   seq_printf(seq,backtracks = %d\n, t-stats.backtrack);
-   seq_printf(seq,semantic match passed = %d\n, 
t-stats.semantic_match_passed);
-   seq_printf(seq,semantic match miss = %d\n, 
t-stats.semantic_match_miss);
-   seq_printf(seq,null node hit= %d\n, t-stats.null_node_hit);
-   seq_printf(seq,skipped node resize = %d\n, 
t-stats.resize_node_skipped);
-#ifdef CLEAR_STATS
-   memset((t-stats), 0, sizeof(t-stats));
-#endif
-#endif /*  CONFIG_IP_FIB_TRIE_STATS */
+static void trie_show_usage(struct seq_file *seq,
+   const struct trie_use_stats *stats)
+{
+   seq_printf(seq, \nCounters:\n-\n);
+   seq_printf(seq,gets = %u\n, stats-gets);
+   seq_printf(seq,backtracks = %u\n, stats-backtrack);
+   seq_printf(seq,semantic match passed = %u\n, 
stats-semantic_match_passed);
+   seq_printf(seq,semantic match miss = %u\n, 
stats-semantic_match_miss);
+   seq_printf(seq,null node hit= %u\n, stats-null_node_hit);
+   seq_printf(seq,skipped node resize = %u\n\n, 
stats-resize_node_skipped);
 }
+#endif /*  CONFIG_IP_FIB_TRIE_STATS */
+
 
 static int fib_triestat_seq_show(struct seq_file *seq, void *v)
 {
@@ -2160,12 +2161,18 @@ static int fib_triestat_seq_show(struct 
seq_printf(seq, Local:\n);
trie_collect_stats(trie_local, stat);
trie_show_stats(seq, stat);
+#ifdef CONFIG_IP_FIB_TRIE_STATS
+   trie_show_usage(seq, trie_local-stats);
+#endif
}
 
if (trie_main) {
seq_printf(seq, Main:\n);
trie_collect_stats(trie_main, stat);
trie_show_stats(seq, stat);
+#ifdef CONFIG_IP_FIB_TRIE_STATS
+   trie_show_usage(seq, trie_main-stats);
+#endif
}
kfree(stat);
 

-- 
Stephen Hemminger [EMAIL PROTECTED]

--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html