[erlang-patches] Pollset per scheduler and bind port to scheduler

Lukas Larsson <>
Wed Jul 11 16:44:44 CEST 2012


The reason I'm skeptical about anything which binds processes/ports to 
scheduler is that it feels like a temporary solution and would much 
rather do a proper solution where the scheduler takes care of these 
things for you. But as I said, internally we need to talk this over when 
it is not in the middle of summer vacation.

I did some benchmarking using ab and found basically the same figures as 
you. The below is with keep-alive and the values are requests per second:

                    not-bound        bound

R15B01                 44k        37k

master                  44k        35k

master+mp          48k        49k

master+mp+pb    49k        55k

[mp]: multi-poll patch
[pb]: port bind patch
[bound]: Used {scheduler,I} to spread load

Unfortunately I also found that when doing the non-keep alive benchmark 
the performance is seriously degraded.

R15B01 not-bound                  8255
master+mp+pb not-bound    7668
master+mp+pb bound           5765

I did some gprof runs but could not find anything obvious that is going 


On 11/07/12 04:21, Wei Cao wrote:
> I added a macro to conditional compile the patch because I think it
> can be more selectable, I can remove the macro, fix the compilation
> error and test on mingw platform in later version.
> how about provide another BIF named port_flag (like process_flag) to
> let user bind port to a given scheduler?

More information about the erlang-patches mailing list