问题:我们在Windows Server 2012系统上实现了一个视频录制系统。尽管CPU和内存消耗很低,但我们面临着严重的性能问题。
应用程序(VS2005/C++)创建多个网络套接字,每个套接字接收来自以太网的组播UDP视频流。对于每个流,应用程序通过调用WSARecvFrom() (重叠操作)提供一个接收器缓冲区,在MsgWaitForMultipleObjects()中等待窗口的“数据到达”事件,获取数据包,然后在无限循环中重复所有操作。为了测试,除了纯粹的套接字IO工作之外,为了确保最小的CPU和内存消耗,应用程序什么也不做,也不做任何磁盘/文件IO。应用程序进程配置为使用机器上的所
我有一个问题,为什么我的机器的吞吐量与大小为1500字节的小数据包(即64字节)相比非常糟糕?我有一个千兆位网卡,可以以80 to /s的速度传输1500字节大小的数据包,但在64字节大小的数据包中,我很难分辨出大约25 to/s。但是为什么小数据包的吞吐量会有很大的差异呢?
编辑:在linux中使用内存映射将数据包从用户空间传输到内核空间,然后直接写入网络驱动程序进行传输。