最近,我读了很多关于10 mb/s网卡、它们的DMA和linux内核(10/100mb/s网卡)处理数据方式的网站和书籍,有几个问题出现在我的脑海里。将10 at /s的数据流从NIC发送到用户域的最简单方法是什么(我假设能够以相同的速率处理用户域中的数据)。和或者他们还有我想不到的更好的解决方案:
谢谢。
为了排除网卡或网络路径的问题,客户端和服务器都在一台机器上,并通过本地主机进行通信。在这两种情况下,CPU使用率都很低,而且绝大部分的CPU使用都是内核时间,所以我非常肯定,我对C#和.NET运行时的使用并不是瓶颈。至于它的价值,我还尝试了多达32个并发的HTTP操作,以查看它是否可以扩展,但仍然没有joy;大约200 to /s。
我有一个基于ubuntu 10.04主机的kvm主机,客人是rhel 5.3 64位,SIOCGMIIREG on eth0 failed: Input/output erroreth0: no autonegotiation, 100baseTx-FD, link oketh0: no autonegotiation, 100baseTx-FD, link ok
product info: vendor 00:5
我有一个千兆位网卡,可以以80 to /s的速度传输1500字节大小的数据包,但在64字节大小的数据包中,我很难分辨出大约25 to/s。我知道,在1500字节数据包的情况下,我需要发送大约80k个PPS才能达到线路速率,而对于64个字节,需要发送大约140万PPS。
但是为什么小数据包的吞吐量会有很大的差异呢?编辑:在linux中使用内存映射将数据包从用户空间传输到内核空间,然后直接写入网络驱动程序进行传输。我看到我的CPU利用率非常低,与64个字节和1500字节数据包相比是一样的。