[erlang-bugs] efile_drv & async thread key

Rick Reed <>
Wed Aug 14 02:21:04 CEST 2013


I assume the reason for keying the file requests is to prevent a single
port from
soaking up all the async threads?

Rr


On Tue, Aug 13, 2013 at 4:52 AM, Lukas Larsson <> wrote:

>  And there it is, conclusive proof that I should not be debugging
> Rickard's code before lunch.
>
> Found the issue, will create a fix for it. As a workaround for R16B you
> can use a prime number as the number of async threads :)
>
> Lukas
>
>
> On 13/08/13 10:05, Lukas Larsson wrote:
>
> 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 FreeBSD machine.
>
> Lukas
>
> 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.
>
> Lukas
>
> 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.
>
>  Rr
>
>
>
> _______________________________________________
> erlang-bugs mailing ://erlang.org/mailman/listinfo/erlang-bugs
>
>
>
>
> _______________________________________________
> erlang-bugs mailing ://erlang.org/mailman/listinfo/erlang-bugs
>
>
>
>
> _______________________________________________
> erlang-bugs mailing ://erlang.org/mailman/listinfo/erlang-bugs
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-bugs/attachments/20130813/e27be08a/attachment.html>


More information about the erlang-bugs mailing list