Closed BOY332 closed 2 months ago
尝试修改一下配置
main分支最新拉取的代码,配置的1w cc,1s两个保活包,不知道为啥爬不上去,以及socket close
keepalive 1s
client 1s, server 100s 配置10wcc,这样的配置cc差不多了,误差不大
另外想请教两个问题: 1)为什么会时不时有tcpdrop,以及fin包,Rt 2)可否在一定cc下控制pps,比如1s保活2个包,达到20wpps的cc流量,配置keepalive 1s 2
单cpu测了一下,还是有tcpdrop,virtio网卡是虚拟网卡,不支持RSS。
把并发降低,看看 是不是达到网卡极限,或者中间设备丢包了
试一下最新代码,连接数控制更加精准
配置描述
client: server:
我想利用多核来测CC,因为是在虚拟机里面使用,用的半虚拟化驱动virtio,因为不支持rss,所以配置 rss auto mq_rx_none
问题现象
1)CC限制不住,配置1000,冲到了1w多,并且不断增长 2) 不知为何会有fin包产生,以及TCP DROP,socket_close,我理解我配置了保活,带宽够的情况下不应该会有socket close,否则会产生新的cc。 3) PKTS速率对不上,我配置的keepalive为1s,cc为2000,速率应该为2000pps,结果不可控
基本定位思路
socket是基于每个核维护的,不支持RSS,那么流量的发和收就有可能不在同一个核上,这个时候就会产生DUP,DUP操作会增加其它核cc统计计数,就会有同样的socket分布在不同的核上,但是在显示cc的时候,并没有减去dup,造成比配置的cc多,我尝试了改成如下图su所示的代码,然后看到界面显示正常了。
至于FIN包是怎么来的?我估计和不支持RSS也有关系,因为我用MLX5网卡测试数据是正常的
期望
期望作者能支持一下这种情况,比如多核virtio场景下,我配置的cc是多少最终生效就应该是多少,以及发包速率应和配置对应,就是多少让产品适应更多的场景。