行为如下:例如,一个具有 200 个套接字的服务器工作者每秒处理 100K 回声。在同一个端口上启动另一个服务器工作程序(每个工作程序的套接字数量相同或少一倍,没关系),立即将第一个工作程序的性能降低到大约 50%,并且稍微提高了每台机器的整体性能(每个工作程序服务每秒大约 50K 回波)。
因此,6 核机器的性能与 1 核机器的性能大致相同。
我尝试了不同的方法,例如为每个工作人员设置一个独立的 IOCP 端口(在 CreateIoCompletionPort 中将 NumberOfConcurrentThreads 指定为 1),或者为所有工作人员尝试一个共享的 IOCP 端口(NumberOfConcurrentThreads 等于工作人员的数量),性能是相同的。我的工作人员共享零数据,因此没有锁等。
我希望我遗漏了一些东西,而不是 Windows 内核网络可扩展性问题。我正在使用 Windows 7 企业版 x64。
当然,期望是近似线性扩展性能。
有人知道 IOCP 在一台机器上的多核上的实际可扩展性吗?当活动套接字的数量增加时会出现什么情况?
谢谢!