我正在实现一个自定义服务器,需要维护非常大量(100K或更多)的长连接。服务器只是在套接字之间传递消息,不进行任何严格的数据处理。消息很小,但每秒接收/发送许多消息。减少延迟是其中一个目标。我意识到使用多个核心不会提高性能,因此我决定通过调用io_service对象的run_one或poll方法在单个线程中运行服务器。无论如何,多线程服务器将更难实现。
可能的瓶颈是什么?系统调用、带宽、完成队列/事件多路复用?我怀疑分配处理程序可能需要锁定(这是由asio库内部完成的)。是否可以在boost.asio中禁用事件队列锁定(或其他任何锁定)?
编辑:相关问题。系统调用性能是否会随着多线程而提高?我的感觉是,因为系统调用是由内核原子/同步的,所以添加更多线程不会提高速度。
可能的瓶颈是什么?系统调用、带宽、完成队列/事件多路复用?我怀疑分配处理程序可能需要锁定(这是由asio库内部完成的)。是否可以在boost.asio中禁用事件队列锁定(或其他任何锁定)?
编辑:相关问题。系统调用性能是否会随着多线程而提高?我的感觉是,因为系统调用是由内核原子/同步的,所以添加更多线程不会提高速度。