select timings

Jeff Roberson jroberson at chesapeake.net
Mon Jul 9 18:10:22 UTC 2007


On Sun, 8 Jul 2007, Diane Bruce wrote:

> Hi,
>
> It is a rather naive test program, close all fd's except
> for 0,1,2 of course, then open /dev/null multiple times, then do
> a select() on each descriptor.  ~db/selt.c

I should mention that select2.diff embeds a selfd in each selinfo which 
means that with no collision we avoid malloc().  selfd is the structure 
that is allocated for each file descriptor by each thread that is 
selecting.  select.diff allocates them on demand every time.  The first 
select is slower as we have to fill the uma cache but after that it's 
remarkably faster.

Thanks,
Jeff

>
> Each fd "fires" so select() goes through each bit.
>
> First two tests are with STOCK -7 kernel
>
> STOCK
> MAXFD = 1024
>
> ./selt
> First select 0 4052
> Second select 0 4011
> dark# ./selt
> First select 0 4037
> Second select 0 3991
> dark# ./selt
> First select 0 4006
> Second select 0 4018
> dark# ./selt
> First select 0 4008
> Second select 0 4583
> dark# ./selt
> First select 0 4041
> Second select 0 4012
>
> MAXFD 8192
>
> dark# ./selt
> First select 0 28736
> Second select 0 28607
> dark# ./selt
> First select 0 28655
> Second select 0 28641
> dark# ./selt
> First select 0 28629
> Second select 0 28592
> dark# ./selt
> First select 0 28890
> Second select 0 29189
> dark# ./selt
> First select 0 28629
> Second select 0 28963
> dark# ./selt
> First select 0 28960
> Second select 0 28593
> dark# ./selt
> First select 0 28622
> Second select 0 28689
>
> With Jeffr select2.diff
> MAXFD 8192
> ./selt
> First select 30328
> Second select 0 30375
> dark% ./selt
> First select 0 30423
> Second select 0 30214
> dark% ./selt
> First select 0 30444
> Second select 0 30200
> dark% ./selt
> First select 0 30362
> Second select 0 30797
> dark% ./selt
> First select 0 30372
> Second select 0 30365
>
> Using Jeffr's original select.diff
>
> with 8192 fds
> First select 0 30738
> Second select 0 28906
> dark% ./selt
> First select 0 29242
> Second select 0 28880
> dark% ./selt
> First select 0 28612
> Second select 0 28684
> dark% ./selt
> First select 0 28617
> Second select 0 28709
> dark% ./selt
> First select 0 28926
> Second select 0 28784
>
> with 1024 fds
> ./selt
> First select 0 4056
> Second select 0 4063
> dark# ./selt
> First select 0 4297
> Second select 0 4163
> dark# ./selt
> First select 0 4101
> Second select 0 4728
> dark# ./selt
> First select 0 4137
> Second select 0 4218
> dark# ./selt
> First select 0 4034
> Second select 0 4036
> dark# ./selt
> First select 0 4075
> Second select 0 4062
>
> I will be trying some other select tests.
> I suspect with a sparse fd_set, jeffr's results will be better than stock.
> We'll see.
>
> - Diane
> --
> - db at FreeBSD.org db at db.net http://www.db.net/~db
> _______________________________________________
> freebsd-arch at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-arch
> To unsubscribe, send any mail to "freebsd-arch-unsubscribe at freebsd.org"
>


More information about the freebsd-arch mailing list