<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">Hi Rick!<br>
<br>
On 08/14/2013 02:21 AM, Rick Reed wrote:<br>
</div>
<blockquote
cite="mid:CA+SuFX1do2P9oX1o=gCvSBpc7NpZxU8GjM8Fdv=kWOsTcNXnuQ@mail.gmail.com"
type="cite">
<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1">
<div dir="ltr">I assume the reason for keying the file requests is
to prevent a single port from
<div>soaking up all the async threads?</div>
</div>
</blockquote>
Yes, and it's also important that requests for the same file
"descriptor" end up in she same async queue. So we need to store a
fixed key in the file descriptor structure.<br>
<br>
I think I will hash the pointer to create the key, not just shift
away the "zero-bits", you never know which icky patterns an
allocator can create that will distribute the jobs unevenly. The key
will only be calculated upon opening, so there will be minimal
performance hit due to the more complicated calculations.<br>
<br>
Thanks for reporting - this could cause severe performance issues in
applications!<br>
<br>
Cheers,<br>
Patrik<br>
<blockquote
cite="mid:CA+SuFX1do2P9oX1o=gCvSBpc7NpZxU8GjM8Fdv=kWOsTcNXnuQ@mail.gmail.com"
type="cite">
<div dir="ltr">
<div><br>
</div>
<div>Rr</div>
</div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">
On Tue, Aug 13, 2013 at 4:52 AM, Lukas Larsson <span
dir="ltr"><<a moz-do-not-send="true"
href="mailto:lukas@erlang.org" target="_blank">lukas@erlang.org</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF"> And there it is,
conclusive proof that I should not be debugging Rickard's
code before lunch. <br>
<br>
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 :)<span class="HOEnZb"><font color="#888888"><br>
<br>
Lukas</font></span>
<div>
<div class="h5"><br>
<br>
<div>On 13/08/13 10:05, Lukas Larsson wrote:<br>
</div>
<blockquote type="cite"> Sigh, apparently I spoke too
soon. <br>
<br>
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. <br>
<br>
Lukas<br>
<br>
<div>On 13/08/13 09:40, Lukas Larsson wrote:<br>
</div>
<blockquote type="cite"> Hello Rick!<br>
<br>
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.
<br>
<br>
Lukas<br>
<br>
<div>On 13/08/13 05:40, Rick Reed wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">It looks to me as though there's
a bit of a problem in the way efile_drv.c
generates the
<div>key that's used to select an async driver
queue. It uses the address of the port
which</div>
<div>on our system is 8-byte aligned.
Meanwhile, erl_async.c does a simple mod
operation</div>
<div>with the number of async threads, so the
number of threads that can actually be used</div>
<div>by file operations is 1/8th of the number
configured. I suspect this isn't intended.</div>
<div><br>
</div>
<div>Rr</div>
<div><br>
</div>
</div>
<br>
<fieldset></fieldset>
<br>
<pre>_______________________________________________
erlang-bugs mailing list
<a moz-do-not-send="true" href="mailto:erlang-bugs@erlang.org" target="_blank">erlang-bugs@erlang.org</a>
<a moz-do-not-send="true" href="http://erlang.org/mailman/listinfo/erlang-bugs" target="_blank">http://erlang.org/mailman/listinfo/erlang-bugs</a>
</pre>
</blockquote>
<br>
<br>
<fieldset></fieldset>
<br>
<pre>_______________________________________________
erlang-bugs mailing list
<a moz-do-not-send="true" href="mailto:erlang-bugs@erlang.org" target="_blank">erlang-bugs@erlang.org</a>
<a moz-do-not-send="true" href="http://erlang.org/mailman/listinfo/erlang-bugs" target="_blank">http://erlang.org/mailman/listinfo/erlang-bugs</a>
</pre>
</blockquote>
<br>
<br>
<fieldset></fieldset>
<br>
<pre>_______________________________________________
erlang-bugs mailing list
<a moz-do-not-send="true" href="mailto:erlang-bugs@erlang.org" target="_blank">erlang-bugs@erlang.org</a>
<a moz-do-not-send="true" href="http://erlang.org/mailman/listinfo/erlang-bugs" target="_blank">http://erlang.org/mailman/listinfo/erlang-bugs</a>
</pre>
</blockquote>
<br>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
erlang-bugs mailing list
<a class="moz-txt-link-abbreviated" href="mailto:erlang-bugs@erlang.org">erlang-bugs@erlang.org</a>
<a class="moz-txt-link-freetext" href="http://erlang.org/mailman/listinfo/erlang-bugs">http://erlang.org/mailman/listinfo/erlang-bugs</a>
</pre>
</blockquote>
<br>
</body>
</html>