[erlang-bugs] efile_drv & async thread key
Tue Aug 13 10:05:01 CEST 2013
Sigh, apparently I spoke too soon.
I remembered incorrectly about the change. It was in R16B that
ErlDrvPort became a ptr and it was an id before R16B. Anyways, it is odd
that the ptr is 8 bit aligned on you system. On mine (Ubuntu 13.04,
x86_64) the ptrs are not aligned and the load is nicely distributed
among async threads. If I remember correctly you are using FreeBSD on
x86_64? I'll check if I can reproduce the behavior you are seeing on our
On 13/08/13 09:40, Lukas Larsson wrote:
> Hello Rick!
> Which version of Erlang are you using? From R16B (I think), the
> ErlDrvPort datatype no longer is a pointer to the port struct. Instead
> it is the slot id into the port table and those ids should contain all
> values. I did a quick test on my computer running the latest on maint
> on github and seem to get a full spread over all async threads.
> On 13/08/13 05:40, Rick Reed wrote:
>> It looks to me as though there's a bit of a problem in the way
>> efile_drv.c generates the
>> key that's used to select an async driver queue. It uses the address
>> of the port which
>> on our system is 8-byte aligned. Meanwhile, erl_async.c does a
>> simple mod operation
>> with the number of async threads, so the number of threads that can
>> actually be used
>> by file operations is 1/8th of the number configured. I suspect this
>> isn't intended.
>> erlang-bugs mailing list
> erlang-bugs mailing list
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the erlang-bugs