[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4AE4A6D9.5090307@gmail.com>
Date: Sun, 25 Oct 2009 20:28:25 +0100
From: Eric Dumazet <eric.dumazet@...il.com>
To: Octavian Purdila <opurdila@...acom.com>
CC: paulmck@...ux.vnet.ibm.com, Benjamin LaHaise <bcrl@...et.ca>,
netdev@...r.kernel.org, Cosmin Ratiu <cratiu@...acom.com>
Subject: Re: [PATCH] net: allow netdev_wait_allrefs() to run faster
Octavian Purdila a écrit :
> On Sunday 25 October 2009 10:35:10 you wrote:
>>> Got some time today and did some experiments myself. The test is deleting
>>> 1000 dummy interfaces (interface status down, no IP/IPv6 addresses
>>> assigned) on a UP non-preempt ppc750 @800Mhz system.
>>>
>>> 1. Ben's patch:
>>>
>>> real 0m 3.42s
>>> user 0m 0.00s
>>> sys 0m 0.00s
>>>
>>> 2. Eric's schedule_timeout_uninterruptible(1);
>>>
>>> real 0m 3.00s
>>> user 0m 0.00s
>>> sys 0m 0.00s
>>>
>>> 3. Simple synchronize_rcu_expedited()
>>>
>>> This doesn't seem to work well with the UP non-preempt case since
>>> synchronize_rcu_expedited() is a noop in this case - turning
>>> netdev_wait_allrefs() into a while(1) loop.
>> Thanks for these numbers. I presume HZ value is 1000 on this platform ?
>>
>
> Yes. I've attach the full config to this email as well.
>
>> Could you give us your scripts so that we can use same "benchmark" ?
>>
>
> Sure, I've attached the hack module code I've used.
>
> For creating interfaces: echo 1000 > /proc/sys/net/ndst/add
> For deleting interface echo start_ifindex stop_ifindex > /proc/sys/net/ndst/del
>
> Some more information:
>
> - on our old and optimized kernel I am getting 0.4s for creating 128000
> interfaces and 0.57s for deleting them
>
> - the 2.6.31 kernel I got the 3s numbers does have some patches to speed-up
> interface creating and deletion (removal of per device sysctl and dev_snmp6
> entries)
>
> I'll start posting the patches we have as RFC.
>
OK thanks, I thought you were using dummy module
$ time insmod drivers/net/dummy.ko numdummies=100
real 0m2.493s
user 0m0.001s
sys 0m0.021s
$ time rmmod dummy
real 0m1.610s
user 0m0.000s
sys 0m0.001s
$ time insmod drivers/net/dummy.ko numdummies=200
real 0m10.118s
user 0m0.000s
sys 0m0.015s
$ time rmmod dummy
real 0m3.218s
user 0m0.000s
sys 0m0.001s
$ time insmod drivers/net/dummy.ko numdummies=300
real 0m22.564s
user 0m0.000s
sys 0m0.034s
$ time rmmod dummy
real 0m4.755s
user 0m0.000s
sys 0m0.006s
$ perf record -f insmod drivers/net/dummy.ko numdummies=300
$ perf report
# Samples: 898
#
# Overhead Command Shared Object Symbol
# ........ ....... ...................... ......
#
41.65% insmod [kernel] [k] __register_sysctl_paths
22.83% insmod [kernel] [k] strcmp
5.46% insmod [kernel] [k] pcpu_alloc
2.23% insmod [kernel] [k] sysfs_find_dirent
1.56% insmod [kernel] [k] __sysfs_add_one
1.11% insmod [kernel] [k] pcpu_alloc_area
1.11% insmod [kernel] [k] _spin_lock
1.00% insmod [kernel] [k] kmemdup
1.00% insmod [kernel] [k] kmem_cache_alloc
0.67% insmod [kernel] [k] find_symbol_in_section
0.67% insmod [kernel] [k] find_next_zero_bit
0.67% insmod [kernel] [k] idr_get_empty_slot
0.67% insmod [kernel] [k] mutex_lock
0.67% insmod [kernel] [k] mutex_unlock
0.56% insmod [kernel] [k] vunmap_page_range
0.56% insmod [kernel] [k] __slab_alloc
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists