[erlang-questions] Improve performance of IO bounded server written in Erlang via having pollset for each scheduler and bind port to scheduler together with process

Zabrane Mickael <>
Thu Jul 12 12:14:18 CEST 2012


Awesome analysis Wei.

you were right about LCNT (--enable-lock-counter), now it's compiling just fine.
I'll keep you informed.

Regards,
Zabrane

On Jul 12, 2012, at 11:52 AM, Wei Cao wrote:

> it seems you enable lcnt,  do you include --enable-lock-counter in
> your ./configure command?
> 
> lcnt is broken in master branch at the time I branched to commit
> patches, and it's fixed in the lastest otp master branch.
> 
> 
> 2012/7/12 Zabrane Mickael <>:
>> Wei,
>> 
>> On Jul 12, 2012, at 11:23 AM, Wei Cao wrote:
>> 
>> Not really,  bind_port_to_scheduler is based on pollset_per_scheduler,
>> you can use bind_port_to_scheduler only,
>> 
>> git fetch git://github.com/weicao/otp.git bind_port_to_scheduler
>> 
>> 
>> can't compile the VM wihth your new patch:
>> 
>> git clone git://github.com/weicao/otp.git
>> cd otp
>> git fetch git://github.com/weicao/otp.git bind_port_to_scheduler
>> ./otp_build autoconf
>> CFLAGS="-DERTS_POLLSET_PER_SCHEDULER -g -O3 -fomit-frame-pointer"
>> ./configure --prefix=/SOMEWHERE/usr
>> make && make install
>> make clean (WITH OR WITHOUT make clean, it doesn't compile)
>> make
>> [...]
>> gcc  -m32 -DERTS_POLLSET_PER_SCHEDULER -g -O3 -fomit-frame-pointer
>> -I/opt/otp/erts/i686-pc-linux-gnu  -D_LARGEFILE_SOURCE
>> -D_FILE_OFFSET_BITS=64 -fno-tree-copyrename  -D_GNU_SOURCE -DERTS_SMP
>> -DHAVE_CONFIG_H -Wall -Wstrict-prototypes -Wmissing-prototypes
>> -Wdeclaration-after-statement -DUSE_THREADS -D_THREAD_SAFE -D_REENTRANT
>> -DPOSIX_THREADS -D_POSIX_THREAD_SAFE_FUNCTIONS -DERTS_ENABLE_LOCK_COUNT
>> -Ii686-pc-linux-gnu/opt/smp -Ibeam -Isys/unix -Isys/common
>> -Ii686-pc-linux-gnu -Izlib  -Ipcre -Ihipe -I../include
>> -I../include/i686-pc-linux-gnu -I../include/internal
>> -I../include/internal/i686-pc-linux-gnu -c beam/erl_process_lock.c -o
>> obj/i686-pc-linux-gnu/opt/smp/erl_process_lock.o
>> beam/erl_process_lock.c: In function 'erts_lcnt_enable_proc_lock_count':
>> beam/erl_process_lock.c:1275:15: error: 'process_tab' undeclared (first use
>> in this function)
>> beam/erl_process_lock.c:1275:15: note: each undeclared identifier is
>> reported only once for each function it appears in
>> make[3]: *** [obj/i686-pc-linux-gnu/opt/smp/erl_process_lock.o] Error 1
>> make[3]: Leaving directory `/opt/otp/erts/emulator'
>> make[2]: *** [opt] Error 2
>> make[2]: Leaving directory `/opt/otp/erts/emulator'
>> make[1]: *** [smp] Error 2
>> make[1]: Leaving directory `/opt/otp/erts'
>> 
>> Regards,
>> Zabrane
>> 
>> 
>> 
>> 
>> 
>> 2012/7/12 Zabrane Mickael <>:
>> 
>> 
>> On Jul 12, 2012, at 11:12 AM, Wei Cao wrote:
>> 
>> 
>> The fix is git-pushed to patch branches, retrieved by
>> 
>> 
>> git fetch git://github.com/weicao/otp.git bind_port_to_scheduler
>> 
>> git fetch git://github.com/weicao/otp.git pollset_per_scheduler
>> 
>> 
>> I used git push --force, so it's better to fetch it whole again.
>> 
>> 
>> 
>> So I need both patches? Right?
>> 
>> 
>> Regards,
>> 
>> Zabrane
>> 
>> 
>> 
>> 
>> 
>> --
>> 
>> Best,
>> 
>> Wei Cao
>> 
>> 
>> 
>> 
> 
> 
> 
> -- 
> 
> Best,
> 
> Wei Cao





More information about the erlang-questions mailing list