[Vm-dev] [OpenSmalltalk/opensmalltalk-vm] 171c23: Added epoll support for aio.c on unix

Eliot Miranda noreply at github.com
Mon Oct 19 01:56:44 UTC 2020


  Branch: refs/heads/Cog
  Home:   https://github.com/OpenSmalltalk/opensmalltalk-vm
  Commit: 171c235451dd16fe6bb29329c3562b2c741f4b1d
      https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/171c235451dd16fe6bb29329c3562b2c741f4b1d
  Author: Levente Uzonyi <leves at caesar.elte.hu>
  Date:   2020-10-19 (Mon, 19 Oct 2020)

  Changed paths:
    M platforms/unix/vm/aio.c

  Log Message:
  -----------
  Added epoll support for aio.c on unix

When HAVE_CONFIG_H and HAVE_EPOLL is true (the former is pretty much always
true), the select-based aio implementation is replaced with an epoll-based one.
The epoll variant has a few advantages:

- it is free of the lost readSemaphore signals bug (see the comments of
  Socket's various #waitFor* methods which wait on readSemaphore).
- idle CPU usage is down from ~10% to ~2%
- faster Socket operations

Known issue:
- when the VM quits, an error message appears from aioDisable() because
  the file descriptor about to be removed from the epoll set has already
  been closed, therefore it's not in the set. It can be worked around
  by supressing error messages when aioDisable() is called by aioFini()


  Commit: 5fea0e35d24cbda5d31e3b0faaf2c6223c030a26
      https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/5fea0e35d24cbda5d31e3b0faaf2c6223c030a26
  Author: Eliot Miranda <eliot.miranda at gmail.com>
  Date:   2020-10-18 (Sun, 18 Oct 2020)

  Changed paths:
    M platforms/unix/vm/aio.c

  Log Message:
  -----------
  Merge pull request #528 from smalltalking/Cog

Added epoll support for aio.c on unix


Compare: https://github.com/OpenSmalltalk/opensmalltalk-vm/compare/da7954d2e48d...5fea0e35d24c


More information about the Vm-dev mailing list