WinIO improvement: Multiple workers
While discussing ~WinIO with @Phyx he noted that currently WinIO may regress a bit under serial workloads. This can be addressed by supporting multiple I/O workers:
<Phyx-> right now, the current I/O manager has no overhead from the haskell runtime. It just blocks and gives back data, blocks gives back data.
<Phyx-> winio issues the asynchronous requests, but when it handles it, and you request a new chunk
<Phyx-> that read is often done before the worker thread has made it back to the blocking wait call
<Phyx-> so the caller waits longer. the problem should go away when you have multiple workers. as they can immediately server the next chunk without waiting for the previous worker to return
<Phyx-> the workers do extra work at the end, as they have to calculate the next timeout interval
<Phyx-> so the overhead is expected, and the designed workaround is to have multiple workers