情况是这样,我需要发送自己构造的数据包,将数据封在TCP包中,然后再封在IP包中,最后再发送出去
现在要尽可能达到最快的发送速度,我的方案是先创建一个字符串数组,用于存放已经构造好的数据包,然后程序运行时先把数据包构造好并保存在数组中,然后在启动发包的线程
我的带宽是1000M,当启动一个线程时,发包速度大约是170M,CPU占用率40%左右,但是加到10个进程时速度也就是190M,cpu 50%---60%,加到50个或更多是速度也就是200M,cpu 60%+,不是线程越多速度应该越快吗,这是为什么,CPU也没有占满啊
如果要使用零拷贝技术应该如何处理,求指点
依据你的平台,你应该选择性的读一读《UNIX 网络编程》或《Windows 网络编程》。
谢谢了
1000M以太网,有效数据吞吐量300M就不错了,再说1000M网卡号称1000M实际未必跑的了这么高,受很多因素限制,比如网线的质量、电磁环境等。估计你用零拷贝技术效果也好不到哪里去。
USB3.0联机线理论速度5G,可以轻松达到1G以上的有效载荷传输速度。QQ:1561724180
我只是向网卡投递这些数据包,网卡发送这些数据是与网络环境关系不大的,网卡数据能够发送出去,但是到达目的端的不一定是全部数据,因为像如网线的质量、电磁环境等的因素会导致丢包,所以导致有效吞吐量没有那么大,我现在只是向网卡投递数据并发送,不知道为什么速度上不去
不是线程越多越快…
磁盘IO,网络IO,CPU负荷,都是要综合考虑的…