我有一个网络客户端和服务器应用程序。数据流是这样的,客户端向服务器发送消息,服务器以确认响应。只有在收到确认后,客户端才会秒下一条消息。
客户端应用程序,用 C++ 编写,有 3 个线程,即网络线程(负责通过套接字发送消息)、主线程(负责发出请求消息)和计时器线程(每秒触发一次)。
服务器应用程序有 2 个线程,主线程和网络线程。
我运行 RHEL 6.3、2.6.32-279 内核。
配置1
- 调整的 adm 配置文件延迟性能
- 所有客户端的线程在同一个 CPU Core id 上
- 所有服务器的线程都在相同的 CPU 核心 ID 上,但与客户端线程的核心 ID 不同
- 客户端和服务器在同一台机器上运行
吞吐量:每秒 4500 条消息
配置2
- 调整的 adm 配置文件吞吐量性能
- 所有客户端的线程在同一个 CPU Core id 上
- 所有服务器的线程都在相同的 CPU 核心 ID 上,但与客户端线程的核心 ID 不同
- 客户端和服务器在同一台机器上运行
吞吐量:每秒 9-15 条消息
配置3
- 调整的 adm 配置文件吞吐量性能
- 不同 CPU Core id 上的所有客户端线程
- 不同 CPU Core id 上的所有 Server 线程,以及来自 Client 线程的不同 Core Id
- 客户端和服务器在同一台机器上运行
吞吐量:每秒 1100 条消息
机器的负载可以忽略不计。当配置文件从延迟性能切换到吞吐量性能时,有人可以解释每秒 4k 条消息下降到 9 条消息吗?