You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Event Library that designed for Ruby 3.0 Fiber Scheduler.
This gem is still under development, APIs and features are not stable. Advices and PRs are highly welcome.
Features
IO Backend Support
Linux
Windows
macOS
FreeBSD
io_uring
⚠️ (See 1)
❌
❌
❌
epoll
✅ (See 2)
❌
❌
❌
kqueue
❌
❌
✅ (⚠️ See 5)
✅
IOCP
❌
❌ (⚠️See 3)
❌
❌
Ruby (IO.select)
✅ (See 6)
✅ (⚠️See 4)
✅ (See 6)
✅ (See 6)
when liburing is installed. (Currently fixing)
when kernel version >= 2.6.9
WOULD NOT WORK until FILE_FLAG_OVERLAPPED is included in I/O initialization process.
Some I/Os are not able to be nonblock under Windows. Using POSIX select, SLOW. See Scheduler Docs.
kqueue performance in Darwin is very poor. MAY BE DISABLED IN THE FUTURE.
Using poll
Benchmark
The benchmark is running under v0.3.6 version. See example.rb in midori for test code, the test is running under a single-thread server.
The test command is wrk -t4 -c8192 -d30s https://localhost:8080.
All the systems have set their file descriptor limit to maximum.
On systems raising "Fiber unable to allocate memory", sudo sysctl -w vm.max_map_count=1000000 is set.