[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

Wei Cao <>
Thu Jul 12 11:12:25 CEST 2012

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.

2012/7/12 Zabrane Mickael <>:
> Hi Wei,
>>> We already surpassed the 100krps on an 8-cores machine with our HTTP server
>>> (~150K rps).
>> Which erlang version did you use to get ~150k rps on 8-cores machine,
>> patched or unpatched?
> We reach the 150K on the unpatched version.
>> if it was measured on a unpatched erlang
>> version, would you mind measuring it on the patched version and let me
>> know the result?
> I didn't yet adapted our code to use VM with your patch.
> I'll keep you informed.
>> Today I found a lock bottleneck through SystemTap, trace-cmd and lcnt,
>> after fixing it, ehttpd on my 16-cores can reach 325k rps.
>> RX packets: 326117 TX packets: 326122
>> RX packets: 326845 TX packets: 326859
>> RX packets: 327983 TX packets: 327996
>> RX packets: 326651 TX packets: 326624
>> This is the upper limit of our Gigabit network card, I run ab on three
>> standalone machines to make enough pressure, I posted the fix to
>> github, have a try ~
> That's simply fantastic. Could you share your bottleneck tracking method?
> Any new VM patch to provide?
> Regards,
> Zabrane



Wei Cao

More information about the erlang-questions mailing list