<p>When HAVE_CONFIG_H and HAVE_EPOLL is true (the former is pretty much always<br>
true), the select-based aio implementation is replaced with an epoll-based one.<br>
The epoll variant has a few advantages:</p>
<ul>
<li>it is free of the lost readSemaphore signals bug (see the comments of<br>
Socket's various #waitFor* methods which wait on readSemaphore).</li>
<li>idle CPU usage is down from ~10% to ~2%</li>
<li>faster Socket operations</li>
</ul>
<p>Known issue:</p>
<ul>
<li>when the VM quits, an error message appears from aioDisable() because<br>
the file descriptor about to be removed from the epoll set has already<br>
been closed, therefore it's not in the set. It can be worked around<br>
by supressing error messages when aioDisable() is called by aioFini()</li>
</ul>

<hr>

<h4>You can view, comment on, or merge this pull request online at:</h4>
<p>  <a href='https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/528'>https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/528</a></p>

<h4>Commit Summary</h4>
<ul>
  <li>Added epoll support for aio.c on unix</li>
</ul>

<h4>File Changes</h4>
<ul>
  <li>
    <strong>M</strong>
    <a href="https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/528/files#diff-4a831f2e78c0efb8206405d029fbaa5e30135e02bca71e49274de70369bf2ada">platforms/unix/vm/aio.c</a>
    (356)
  </li>
</ul>

<h4>Patch Links:</h4>
<ul>
  <li><a href='https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/528.patch'>https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/528.patch</a></li>
  <li><a href='https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/528.diff'>https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/528.diff</a></li>
</ul>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/528">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AIJPEWZTKPLGPIPRFWEVXHLSLN6MPANCNFSM4SVNWBRA">unsubscribe</a>.<img src="https://github.com/notifications/beacon/AIJPEW3ZLCLQ5CNYIWPDZZDSLN6MPA5CNFSM4SVNWBRKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4KZJ7PGQ.gif" height="1" width="1" alt="" /></p>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/528",
"url": "https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/528",
"name": "View Pull Request"
},
"description": "View this Pull Request on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>