Jordan Mendelson ([EMAIL PROTECTED]) wrote:
> An implementation of /dev/poll for Linux already exists and has shown to 
> be more scalable than using RT signals under my tests. A patch for 2.2.x 
> and 2.4.x should be available at the Linux Scalability Project @ 
> http://www.citi.umich.edu/projects/linux-scalability/ in the patches 
> section. 

If you'll look at the page I linked to in my original post,
  http://www.kegel.com/dkftpbench/Poller_bench.html
you'll see that I also benchmarked /dev/poll.

When finding 1 active fd among 10000, the Solaris implementation creamed the living 
snot out of the Linux one, even though the Solaris hardware was 5 or so times slower
(see the lmbench results on that page).  Here are the numbers (times in microseconds):

On a 167MHz sun4u Sparc Ultra-1 running SunOS 5.7 (Solaris 7) Generic_106541-11: 

     pipes    100    1000   10000
    select    151       -       -
      poll    470     676    3742
 /dev/poll     61      70      92

On an idle 650 MHz dual Pentium III running Red Hat Linux 6.2 with kernel 2.2.14smp 
plus the /dev/poll patch:

     pipes    100    1000   10000 
    select     28       -       - 
      poll     23     890   11333 
 /dev/poll     19     146    4264 

On the same machine as above, but with vanilla kernel 2.4.0-test10-pre4 smp: 

     pipes    100    1000   10000 
    select     52       -       - 
      poll     49    1184   14660 

> It works fairly well, but I was actually somewhat disappointed to find 
> that it wasn't the primary cause for the system CPU suckage for my 
> particular system. Granted, when you only have to poll a few times per 
> second, the overhead of standard poll() just isn't that bad. 

If you have to poll 100 or fewer sockets, Linux's poll is quite good.
If you have to poll 1000 or so sockets, Linux's /dev/poll works well
(I wish it were available for the current kernels).
But if you have to poll 10000 or sockets on Linux, 
neither standard poll nor /dev/poll as currently implemented performs adequately.
I suspect that RT signals on Linux will do much better for N=10000 than the 
current /dev/poll, and hope to benchmark that soon.

- Dan
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/

Reply via email to