若无必要默认情况下,适用 boost::asio 设定得默认值即可,虽然它浪费了很大得内存,但 boost::asio 设定得默认值,在绝大多数得场景上都是够用得。
但在调整 io_uring 之前,必须正确配置以令 boost::asio 启用 io_uring 调度驱动器服务(后端),您需要参照本人得以下文章。
boost::asio 启用 io_uring(Linux 5.10)队列支持-CSDN博客
在 boost::asio 之中目前并未提供API接口,用来配置 io_uring 队列得大小,每个 io_context 分配的 io_uring 队列,开发人员需要自行评估 io_uring 队列大小,应当设置为多少,内存负载及效能之间可获平衡。
欲调整 boost::asio 得 io_uring 队列大小,我们需要修改 io_uring_service.hpp 头文件(源)之中定义得常量枚举。
// The hint to pass to io_uring_queue_init to size its data structures.enum { ring_size = 16384 };
boost/asio/detail/io_uring_service.hpp - 1.78.0
如果希望减少 io_ring 队列导致的内存负载,那么大家可以将该值设置为:2048、4096,注意:io_ring 队列分配的与内核使用的共享内存为 “RES常驻物理内存”,它不是虚拟内存。
所以,在极低内存服务器平台上(如:128MB、256MB、VPS服务器),开发人员需要谨慎评估风险性。
对于启用 io_ring 的 boost::aiso,建议为多线程驱动一个 io_context 队列,就像 iocp 之中,通常为多线程驱动一个 iocp 完成端口内核句柄实例。