Messages in this thread |  | | Date | Mon, 23 Oct 2000 20:04:11 -0700 | From | Jordan Mendelson <> |
| |
Dan Kegel wrote: > > Jordan Mendelson (jordy@napster.com) 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.
The Linux /dev/poll implementation has a few "non-standard" features such as the ability to mmap() the poll structure memory to eliminate a memory copy.
int dpoll_fd; unsigned char *dpoll; struct pollfd *mmap_dpoll;
dpoll_fd = open("/dev/poll", O_RDWR, 0); ioctl(dpoll_fd, DP_ALLOC, 10000); dpoll = mmap(0, DP_MMAP_SIZE(10000), PROT_WRITE|PROT_READ, MAP_SHARED, dpoll_fd, 0);
dpoll = (struct pollfd *)mmap_dpoll;
Use this memory when reading and write() to add/remove and see if you get any boost in performance. Also, I believe there is a hash table associated with /dev/poll in the kernel patch which might slow down your performance tests when it's first growing to resize itself.
Jordan - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/
|  |