All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Paweł Staszewski" <pstaszewski@itcare.pl>
To: Jarek Poplawski <jarkao2@gmail.com>
Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>,
	Linux Network Development list <netdev@vger.kernel.org>,
	Robert Olsson <robert@robur.slu.se>
Subject: Re: [PATCH net-2.6] Re: rib_trie / Fix inflate_threshold_root.	Now=15 size=11 bits
Date: Wed, 08 Jul 2009 01:23:01 +0200	[thread overview]
Message-ID: <4A53D8D5.5030601@itcare.pl> (raw)
In-Reply-To: <20090706090207.GB3065@ami.dom.local>

[-- Attachment #1: Type: text/plain, Size: 4397 bytes --]

Jarek Poplawski pisze:
> On Mon, Jul 06, 2009 at 01:53:49AM +0200, Paweł Staszewski wrote:
> ...
>   
>> So i make tests with changing sync_pages
>> And
>>
>> ####################################
>> sync_pages: 64
>> total size reach maximum in 17sec
>>     
> ...
>   
>> ######################################
>> sync_pages: 128
>> Fib trie Total size reach max in 14sec
>>     
> ...
>   
>> #########################################
>> sync_pages: 256
>> hmm no difference also in 10sec
>>     
>
> 14 == 10!? ;-)
> ...
>   
:) i miss one test
>> And with sync_pages higher that 256 time of filling kernel routes is the  
>> same approx 10sec.
>>     
>
> Hmm... So, it's better than I expected; syncing after 128 or 256 pages
> could be quite reasonable. But then it would be interesting to find
> out if with such a safety we could go back to more aggressive values
> for possibly better performance. So here is 'the same' patch (so the
> previous, take 8, should be reverted), but with additional possibility
> to change:
> /sys/module/fib_trie/parameters/inflate_threshold_root
>
> I guess, you could try e.g. if: sync_pages 256, inflate_threshold_root 15
> can give faster lookups (or lower cpu loads); with this these inflate
> warnings could be back btw.; or maybe you'll find something in between
> like inflate_threshold_root 20 is optimal for you. (I think it should be
> enough to try this only for PREEMPT_NONE unless you have spare time ;-)
>
>   
And i can't make good tests with cpu load because of problem that i have 
from "weird problem" emails
It depend when i make mpstat to check cpu load and for what time because 
every 15 sec i have 1 do 3 % of cpu and after 15 sec i have almost 40% 
cpu load for next 15 sec.
I try to make mpstat -P ALL 1 60
but after 15 sec of 1 to 3 % cpu load this next higher cpu load if 
different everytime it balance from 30 to 50%

so i make test shorter when cpu load is 1 to 3 % - "mpstat -P ALL 1 10"
output in attached file

Regards
Paweł Staszewski


> Thanks,
> Jarek P.
> ---> (synchronize take 9; apply on top of the 2.6.29.x with the last
>   	all-in-one patch, or net-2.6)
>
>  net/ipv4/fib_trie.c |   18 ++++++++++++++++--
>  1 files changed, 16 insertions(+), 2 deletions(-)
>
> diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c
> index 00a54b2..e8fca11 100644
> --- a/net/ipv4/fib_trie.c
> +++ b/net/ipv4/fib_trie.c
> @@ -71,6 +71,7 @@
>  #include <linux/netlink.h>
>  #include <linux/init.h>
>  #include <linux/list.h>
> +#include <linux/moduleparam.h>
>  #include <net/net_namespace.h>
>  #include <net/ip.h>
>  #include <net/protocol.h>
> @@ -164,6 +165,10 @@ static struct tnode *inflate(struct trie *t, struct tnode *tn);
>  static struct tnode *halve(struct trie *t, struct tnode *tn);
>  /* tnodes to free after resize(); protected by RTNL */
>  static struct tnode *tnode_free_head;
> +static size_t tnode_free_size;
> +
> +static int sync_pages __read_mostly = 1000;
> +module_param(sync_pages, int, 0640);
>  
>  static struct kmem_cache *fn_alias_kmem __read_mostly;
>  static struct kmem_cache *trie_leaf_kmem __read_mostly;
> @@ -316,9 +321,11 @@ static inline void check_tnode(const struct tnode *tn)
>  
>  static const int halve_threshold = 25;
>  static const int inflate_threshold = 50;
> -static const int halve_threshold_root = 15;
> -static const int inflate_threshold_root = 25;
>  
> +static int inflate_threshold_root __read_mostly = 25;
> +module_param(inflate_threshold_root, int, 0640);
> +
> +#define halve_threshold_root	(inflate_threshold_root / 2 + 1)
>  
>  static void __alias_free_mem(struct rcu_head *head)
>  {
> @@ -393,6 +400,8 @@ static void tnode_free_safe(struct tnode *tn)
>  	BUG_ON(IS_LEAF(tn));
>  	tn->tnode_free = tnode_free_head;
>  	tnode_free_head = tn;
> +	tnode_free_size += sizeof(struct tnode) +
> +			   (sizeof(struct node *) << tn->bits);
>  }
>  
>  static void tnode_free_flush(void)
> @@ -404,6 +413,11 @@ static void tnode_free_flush(void)
>  		tn->tnode_free = NULL;
>  		tnode_free(tn);
>  	}
> +
> +	if (tnode_free_size >= PAGE_SIZE * sync_pages) {
> +		tnode_free_size = 0;
> +		synchronize_rcu();
> +	}
>  }
>  
>  static struct leaf *leaf_new(void)
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
>
>   


[-- Attachment #2: sync_pages.txt --]
[-- Type: text/plain, Size: 3200 bytes --]

sync_pages: 256
inflate_threshold_root: 10
Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
Average:     all    0.00    0.00    0.00    0.00    0.00    0.60    0.00    0.00   99.40
Average:       0    0.00    0.00    0.00    0.00    0.00    0.60    0.00    0.00   99.40
Average:       1    0.00    0.00    0.00    0.00    0.00    0.40    0.00    0.00   99.60

sync_pages: 256
inflate_threshold_root: 15
Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
Average:     all    0.00    0.00    0.10    0.00    0.00    0.70    0.00    0.00   99.20
Average:       0    0.00    0.00    0.00    0.00    0.20    0.80    0.00    0.00   99.00
Average:       1    0.00    0.00    0.20    0.00    0.00    0.61    0.00    0.00   99.19

sync_pages: 256
inflate_threshold_root: 20
Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
Average:     all    0.00    0.00    0.00    0.00    0.10    0.80    0.00    0.00   99.10
Average:       0    0.00    0.00    0.00    0.00    0.00    1.00    0.00    0.00   99.00
Average:       1    0.00    0.00    0.00    0.00    0.00    0.61    0.00    0.00   99.39

sync_pages: 256
inflate_threshold_root: 25
Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
Average:     all    0.00    0.00    0.00    0.00    0.00    0.70    0.00    0.00   99.30
Average:       0    0.00    0.00    0.00    0.00    0.20    1.00    0.00    0.00   98.80
Average:       1    0.00    0.00    0.00    0.00    0.00    0.40    0.00    0.00   99.60


sync_pages: 512
inflate_threshold_root: 10
Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
Average:     all    0.00    0.00    0.10    0.00    0.10    0.60    0.00    0.00   99.20
Average:       0    0.00    0.00    0.20    0.00    0.00    1.00    0.00    0.00   98.80
Average:       1    0.00    0.00    0.00    0.00    0.00    0.40    0.00    0.00   99.60

sync_pages: 512
inflate_threshold_root: 15
Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
Average:     all    0.00    0.00    0.20    0.00    0.00    1.10    0.00    0.00   98.70
Average:       0    0.00    0.00    0.40    0.00    0.00    1.00    0.00    0.00   98.60
Average:       1    0.00    0.00    0.00    0.00    0.00    1.01    0.00    0.00   98.99

sync_pages: 512
inflate_threshold_root: 20
Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
Average:     all    0.00    0.00    0.10    0.00    0.10    1.01    0.00    0.00   98.79
Average:       0    0.00    0.00    0.20    0.00    0.20    1.40    0.00    0.00   98.20
Average:       1    0.00    0.00    0.00    0.00    0.00    0.61    0.00    0.00   99.39

sync_pages: 512
inflate_threshold_root: 25
Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
Average:     all    0.00    0.00    0.00    0.00    0.10    0.90    0.00    0.00   99.00
Average:       0    0.00    0.00    0.00    0.00    0.00    1.00    0.00    0.00   99.00
Average:       1    0.00    0.00    0.00    0.00    0.20    0.80    0.00    0.00   99.00

  parent reply	other threads:[~2009-07-07 23:23 UTC|newest]

Thread overview: 99+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-25 15:48 rib_trie / Fix inflate_threshold_root. Now=15 size=11 bits Paweł Staszewski
2009-06-25 21:19 ` Eric Dumazet
2009-06-25 21:52   ` Paweł Staszewski
2009-06-25 22:54     ` Eric Dumazet
2009-06-26 10:06       ` Paweł Staszewski
2009-06-26 10:34         ` Eric Dumazet
2009-06-26 10:47           ` Paweł Staszewski
2009-06-26 10:52             ` Eric Dumazet
2009-06-26 17:26               ` Paweł Staszewski
2009-06-26  8:03   ` Jarek Poplawski
2009-06-26  9:19     ` Robert Olsson
2009-06-26  9:37       ` Jarek Poplawski
2009-06-26 10:26         ` Jorge Boncompte [DTI2]
2009-06-26 12:42         ` Robert Olsson
2009-06-26 12:54           ` Jarek Poplawski
2009-06-26 13:28             ` Jarek Poplawski
2009-06-26 13:52               ` Robert Olsson
2009-06-26 15:10                 ` Jarek Poplawski
2009-06-26 15:30                   ` Paul E. McKenney
2009-06-26 15:54                     ` Jarek Poplawski
2009-06-26 16:15                       ` Jarek Poplawski
2009-06-26 16:23                         ` Paul E. McKenney
2009-06-26 16:45                           ` Jarek Poplawski
2009-06-26 17:05                             ` Paul E. McKenney
2009-06-26 18:05                               ` Jarek Poplawski
2009-06-26 18:21                                 ` Paul E. McKenney
2009-06-26 20:19                                   ` Jarek Poplawski
2009-06-26 20:26                                 ` Robert Olsson
2009-06-26 20:37                                   ` Jarek Poplawski
2009-06-26 21:20                                     ` Jarek Poplawski
2009-06-27 19:20       ` Jarek Poplawski
2009-06-27 20:51         ` Jarek Poplawski
2009-06-28  0:28           ` Paweł Staszewski
2009-06-28 11:11           ` Robert Olsson
2009-06-29  7:57             ` Paweł Staszewski
2009-06-28 11:04         ` Robert Olsson
2009-06-28 12:03           ` Jarek Poplawski
2009-06-28 14:35           ` Jarek Poplawski
2009-06-28 15:32             ` Paweł Staszewski
2009-06-28 15:48               ` Paweł Staszewski
2009-06-28 19:56                 ` Jarek Poplawski
2009-06-28 21:36                 ` Jarek Poplawski
2009-06-29  8:08                   ` Paweł Staszewski
2009-06-29  8:47                     ` Paweł Staszewski
2009-06-29  9:27                       ` Jarek Poplawski
2009-06-29  9:43                         ` Paweł Staszewski
2009-06-29  8:33                   ` [PATCH net-2.6] " Jarek Poplawski
2009-06-29  9:51                     ` Paweł Staszewski
2009-06-29 10:47                       ` Jarek Poplawski
2009-06-29 16:24                         ` Paweł Staszewski
2009-06-29 17:09                           ` Jarek Poplawski
2009-06-30  7:09                         ` Jarek Poplawski
2009-06-30 20:16                           ` Paweł Staszewski
2009-06-30 20:41                             ` Jarek Poplawski
2009-06-30 23:31                               ` Paweł Staszewski
2009-07-01  6:36                                 ` Jarek Poplawski
     [not found]                                   ` <20090701072409.GA12592@ff.dom.local>
2009-07-01  9:43                                     ` Paweł Staszewski
2009-07-01  9:50                                       ` Paweł Staszewski
2009-07-01 10:13                                       ` Jarek Poplawski
2009-07-01 11:04                                         ` Jarek Poplawski
2009-07-01 22:17                                           ` Paweł Staszewski
2009-07-02  5:32                                             ` Jarek Poplawski
2009-07-02  5:43                                               ` Paweł Staszewski
2009-07-02  6:00                                                 ` Jarek Poplawski
2009-07-02 15:31                                                   ` Robert Olsson
2009-07-02 19:06                                                     ` Jarek Poplawski
2009-07-02 21:32                                                       ` Robert Olsson
2009-07-02 22:13                                                         ` Jarek Poplawski
2009-07-05  0:26                                                   ` Paweł Staszewski
2009-07-05  0:30                                                     ` Paweł Staszewski
2009-07-05 16:20                                                       ` Jarek Poplawski
2009-07-05 17:32                                                         ` Jarek Poplawski
2009-07-05 21:32                                                           ` Paul E. McKenney
2009-07-05 22:23                                                             ` Jarek Poplawski
2009-07-05 23:53                                                               ` Paweł Staszewski
2009-07-06  9:02                                                                 ` Jarek Poplawski
2009-07-07 22:56                                                                   ` Paweł Staszewski
2009-07-07 23:50                                                                     ` Jarek Poplawski
2009-07-09 20:34                                                                       ` Paweł Staszewski
2009-07-14 19:41                                                                         ` [PATCH net-next] " Jarek Poplawski
2009-07-15  7:43                                                                           ` Robert Olsson
2009-07-15 13:05                                                                             ` Jarek Poplawski
2009-07-17  8:08                                                                               ` Robert Olsson
2009-07-20 14:41                                                                           ` David Miller
2009-07-07 23:23                                                                   ` Paweł Staszewski [this message]
2009-07-07 23:30                                                                     ` [PATCH net-2.6] " Paweł Staszewski
2009-07-14 18:33                                                             ` [PATCH net-next] " Jarek Poplawski
2009-07-20 14:41                                                               ` David Miller
2009-07-14 21:20                                                             ` [PATCH net-next] ipv4: fib_trie: Use tnode_get_child_rcu() and node_parent_rcu() in lookups Jarek Poplawski
2009-07-20 14:41                                                               ` David Miller
2009-07-05  0:31                                                     ` [PATCH net-2.6] Re: rib_trie / Fix inflate_threshold_root. Now=15 size=11 bits Paweł Staszewski
2009-07-05 12:56                                                     ` [PATCH -stable] " Jarek Poplawski
2009-07-05 13:08                                                     ` [PATCH v2 " Jarek Poplawski
2009-07-08  2:42                                                       ` David Miller
2009-07-08  6:44                                                         ` Jarek Poplawski
2009-06-29 10:58                       ` [PATCH net-2.6] " Jarek Poplawski
2009-06-30 19:48                         ` David Miller
2009-06-30 20:14                           ` Jarek Poplawski
2009-07-10 15:29                           ` Stephen Hemminger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4A53D8D5.5030601@itcare.pl \
    --to=pstaszewski@itcare.pl \
    --cc=jarkao2@gmail.com \
    --cc=netdev@vger.kernel.org \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=robert@robur.slu.se \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.