R8B-0 devpoll patch

Per Bergqvist <>
Tue Feb 26 02:21:44 CET 2002


Hi,                                                                   
                                                                      
Even if you don't like to patch your Erlang releases this             
is one you really want if you run Linux (2.4.x) or Solaris 8.         
                                                                      
This patch implements support for /dev/poll in Solaris                
and /dev/epoll for Linux.                                             
                                                                      
The idea about /dev/[e]poll is to declare interest in a file          
descriptor once to the kernel rather than building large              
poll descriptors and shuffle them around.                             
/dev/epoll (eventpoll) takes it a bit further and mmaps the           
result set allocated by the driver to the process.                    
                                                                      
In tests I have run 8192 concurrent persistent TCP sessions           
pumping 1MB/s over and 10 Mb ethernet with 70% idle cpu on a          
Celeron 650MHz.                                                       
The Solaris variant is less efficient but still gives much            
better performance compare to traditional poll when you have          
many, many file descriptors in use.                                   
                                                                      
Files modified by this patch:                                         
erts/acconfig.h                                                       
erts/configure.in                                                     
erts/emulator/sys/unix/sys.c                                          
                                                                      
To apply the patch:                                                   
                                                                      
# cd $ERL_TOP                                                         
# patch -p1 < devpoll_patch                                           
# cd erts                                                             
# autoheader                                                          
# autoconf                                                            
# cd ..                                                               
# ./configure                                                         
# make                                                                
                                                                      
If you don't have autoheader and autoconf I have attached             
new versions of config.h.in and configure as well.                    
Please note that they should be copied to the erts directory and      
nowhere else.                                                         
                                                                      
A final note on Linux:                                                
To make eventpoll (/dev/epoll) useable for Erlang I modified          
the driver to be pollable itself and to use ms timeouts.              
Davide Libenzi have incorporated the fixes in release 0.28.           
Get this (or later) from                                              
http://www.xmailserver.org/linux-patches/nio-improve.html             
                                                                      
Have fun and please let me know of your experiences.                  
                                                                      
Per                                                                   
                                                                      
=========================================================             
Per Bergqvist                                                         
Synapse Systems AB                                                    
Phone: +46 709 686 685                                                
Email:                                                    
-------------- next part --------------
A non-text attachment was scrubbed...
Name: devpoll_patch
Type: application/octet-stream
Size: 12171 bytes
Desc: not available
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20020226/ec8afbb5/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: config.h.in
Type: application/octet-stream
Size: 8912 bytes
Desc: not available
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20020226/ec8afbb5/attachment-0001.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: configure
Type: application/octet-stream
Size: 163690 bytes
Desc: not available
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20020226/ec8afbb5/attachment-0002.obj>


More information about the erlang-questions mailing list