| ▲ | MathMonkeyMan 6 hours ago | |||||||||||||||||||||||||
I switched out asio's epoll backend for its io_uring in a database server and CPU utilization shot up. Probably depends on usage and the specifics of how it's integrated into the event code. | ||||||||||||||||||||||||||
| ▲ | Asmod4n an hour ago | parent | next [-] | |||||||||||||||||||||||||
No async io framework exists which utilizes everything io_uring can, they are all build around the poll model. As such io_uring will always be worse than the poll like abstractions. The two things that make io_uring fast are chaining of operations and zero syscall mode, the former would require that all async io frameworks/libs would need to be rewritten to make use of that and then all user facing apps would also need to be rewritten since all you’d get now are completions to operations instead of waiting if you can run a operation. | ||||||||||||||||||||||||||
| ▲ | vlovich123 6 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||
That’s paradoxically what you can expect on a busy server - your CPU can spend time doing work that would have been previously IO wait time. Of course, it could be a bug in the implementation where you’re spinning doing no work erroneously, but depends on the details. | ||||||||||||||||||||||||||
| ||||||||||||||||||||||||||
| ▲ | toast0 2 hours ago | parent | prev [-] | |||||||||||||||||||||||||
In addition to the other discussion. It's important to measure outcomes and not just look at the cpu meter... At the same load, how did latency look for A vs B. What was throughput and latency at maximum load like for A vs B. For whichever one had the smaller max throughput, what did latency look like for the other option. For bonus points while testing: is there another observable metric to indicate available capacity, if cpu % free is less useful. | ||||||||||||||||||||||||||