对于有ring buffer的网卡,ring buffer是由驱动与网卡共享的,所以内核可以直接访问ring buffer,一般拷贝frames的副本到自己的内核空间进行处理(deliver到上层协议,之后的一个个skb就是按skb的指针传递方式传递,直到用户获得数据,所以,对于ring buffer网卡,大量拷贝发生在frame从ring buffer传递到内核控制的计算机内存里)。
一般拷贝 frames 的副本到自己的内核空间进行处理(deliver 到上层协议,之后的一个个 skb 就是按 skb 的指针传递方式传递,直到用户获得数据,所以,对于 ring buffer 网卡,大量拷贝发生在 frame 从 ring buffer 传递到内核控制的计算机内存里)。
参数--show-ring 或者 -g 可以显示队列的大小。接收数据包的一个环形缓冲,表示没有被内核取走前可以缓冲几个包。每个通道/队列的缓冲是分开的,不在一起。队列和内核中的 Ring Buffer 是对应的,接收到数据包,通过 DMA 将数据包拷贝到内核。 root@jiangbo12490:~# ethtool --show-ring eth0Ring parameters for...
ring full: 0 pkts linearized: 0 hdr cloned: 0 giant hdr: 0 Tx Queue#: 1 TSO pkts tx: 1955 TSO bytes tx: 6536945 ucast pkts tx: 3711838 ucast bytes tx: 346309662 mcast pkts tx: 0 mcast bytes tx: 0 bcast pkts tx: 1186 bcast bytes tx: 49812 pkts tx err: 0 pkts tx discard: 0...
-l: 显示网卡的队列信息(tx/rx),只针对支持多队列(多ringbuffer队列,即一个队列对应一个队列一段内存地址)的网卡。 # ethtool -l eth0 Channel parameters for eth0: Pre-set maximums: RX:0 TX:0 Other:0 Combined:30 Current hardware settings: ...
rx_fifo_errors如果不为0,表示有包因为RingBuffer装不下而丢弃了,可以通过调整RingBuffer大小解决。 ethtool -G eth0 rx 4096 tx 4096 -G: 显示网卡的接收/发送环形参数。 这样RingBuffer就调大了,可以解决偶发瞬时的丢包。但是排队的包过多也会增加网络包的延时。所以还有个办法就是加快内核处理网络包的速度,...
对于有 ring buffer 的网卡,ring buffer 是由驱动与网卡共享的,所以内核可以直接访问 ring buffer,一般拷贝 frames 的副本到自己的内核空间进行处理(deliver 到上层协议,之后的一个个 skb 就是按 skb 的指针传递方式传递,直到用户获得数据,所以,对于 ring buffer 网卡,大量拷贝发生在 frame 从 ring buffer 传递到...
5. -g 或者 –show-ring:用于显示以太网接口的环形缓冲区参数。例如,可以使用以下命令显示以太网接口eth0的环形缓冲区参数: ethtool -g eth0 除了这些选项之外,ethtool命令还有其他一些选项和功能,您可以通过输入”man ethtool”来查看完整的命令帮助文档。ethtool命令在诊断和调整以太网接口中非常有用,特别是在网...
ethtool,主要涉及 NIC 的本身比如 ring buffer,内容还是蛮多,不少跟硬件的特性相关,分几个大方向说。 speed,duplex 这类的是非常基本的设置,不在这里说了。需要注意的是,能 auto 的尽量 auto,因此,正常情况下,Auto-negotiation 应该是 on 状态。这里说明了原因。
表示数据包已经进入了 Ring Buffer,但是由于内存不够等系统原因,导致在拷贝到内存的过程中被丢弃。 RX overruns 表示了 fifo 的 overruns,这是由于 Ring Buffer(aka Driver Queue) 传输的 IO 大于 kernel 能够处理的 IO 导致的,而 Ring Buffer 则是指在发起 IRQ 请求之前的那块 buffer。很明显,overruns 的增大...