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