Re: rbtree for vm_map

Bang Jun-Young <[email protected]>
Newsgroups gmane.os.netbsd.devel.performance
Message-ID <[email protected]>
On Thu, Oct 30, 2003 at 12:52:29AM +0900, Noriyuki Soda wrote:
> I measured the mmap benchmarks in http://bulk.fefe.de/scalability/
> with the vm map rbtree patch ported from OpenBSD by yamt.
> 
> As you suppose, the rbtree patch made the results much better as follows:
>     the mmap benchmark results:
> 	http://www.sra.co.jp/people/soda/scalability/mmap.gif
> 	http://www.sra.co.jp/people/soda/scalability/mmap.zoom.gif
> 	http://www.sra.co.jp/people/soda/scalability/mmaptouch.gif
> 
>     mmap()ing many small files:
> 	http://www.sra.co.jp/people/soda/scalability/open.gif
> 	http://www.sra.co.jp/people/soda/scalability/manymap-mmap.gif
> 	http://www.sra.co.jp/people/soda/scalability/manymap-mmap.zoom.gif
> 	http://www.sra.co.jp/people/soda/scalability/manymap-touch.gif
> 
>     Hardware:
> 	Celeron 300MHz
>     Software:
> 	NetBSD-splay		: NetBSD-1.6ZE on Oct 26, 2003
> 	NetBSD-splay+rbtree	: NetBSD-1.6ZE on Oct 26, 2003 + rbtree patch
> 	Linux-2.6.0-test8	: RedHat9 w/ linux-2.6.0-test8 kernel
> 
> But as shown in the following mail by yamt,
> 	http://mail-index.netbsd.org/tech-kern/2003/08/26/0000.html
> The rbtree one is worse than stock NetBSD in the /dev/zero mapping
> benchmark as follows:
> 	http://www.sra.co.jp/people/soda/scalability/devzero.gif
> This is because vm map entries for /dev/zero are merged into one entry
> in this case.
> So, the result on stock NetBSD may become worse even with /dev/zero
> mapping, if there are some reasons which make the entries unable to be
> merged, e.g. if there are gaps or other type mappings between the
> /dev/zero mappings.
> The following benchmark shows the fact:
> 	http://www.sra.co.jp/people/soda/scalability/devzeromod.gif
> This is a result with a patch attached at the end of this mail.
> 
> I also tried the following case to be sure:
> 	http://www.sra.co.jp/people/soda/scalability/anon.gif
> 		... use MAP_ANON|MAP_PRIVATE mapping
> 	http://www.sra.co.jp/people/soda/scalability/anonmod.gif
> 		... use MAP_ANON|MAP_PRIVATE mapping
> 		    with similar patch at the end of this mail.
> This shows same behavior with the /dev/zero benchmark.
> 
> The followings are the results of other benchmarks in the yamt's mail:
> 	http://www.sra.co.jp/people/soda/scalability/file.gif
> 	http://www.sra.co.jp/people/soda/scalability/walk.gif
> 
> For people who don't think that the mmap benchmark doesn't concern
> with real applications, the following is a result of benchmark which
> does many pthread_create() and pthreads_join():
> 	http://www.sra.co.jp/people/soda/scalability/pthread.gif
> As you see in this result, the rbtree patch helps a lot with
> the case that a program creates more than 1,000 threads simultaneously.
> Perhaps you think that's nonsense, but there are people who use
> even 10,000 threads simultaneously. See the following web page,
> for example:
> 	http://www.kegel.com/c10k.html
> 
> BTW, the fork benchmark modified by Niels becomes slightly worse as
> follows with the rbtree patch:
> 	http://www.sra.co.jp/people/soda/scalability/forkbench-niels.gif
> Because of the cost to maintain rbtree?

These results are really great. Let's get rbtree in the tree first
and fix /dev/zero problem later. :-)

Jun-Young

-- 
Bang Jun-Young <[email protected]>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.