linux 查看进程网卡,Linux 查看网卡接收报文信息命令ethtool

POS(packet over sonet)就是为了在传统SDH/SONET网络上传输IP分组。由于历史上电信的传输基本上都是基于SDH的,无法直接传输IP分组,所以需要使用PoS端口与IP分组网络互连互通。现在很多电信运营商都在计划布设纯IP的传输网络,直接放弃SDH网。(不过基本上都是“计划”而已,好像只有BT在真的做网卡

FIFO buffer

大部分的Intel千兆网卡都内置了 FIFO buffer,通过FIFO buffer 网卡将数据包传入、传出DMA,所以对于高吞吐量的应用来说,这个部件是非常重要的。 不过,Intel 的前兆网卡的差别不大,按官方资料都可支持高负责的应用。不过,集成到主板的ICH8 千兆网卡 82566DC 不知是否因为失误Gigabit adapter只设计了16K的FIFO buffer。这就意味着,默认8K 用来接收,8K 用来发送,其潜在问题,不言而喻。如果FIFO buffer过小,也会增加PCI-Express延迟,使得吞吐在100Kpps左右就到达极限。继而首先flow-control 将不能正常工作,即便不出问题也会出现丢包。

因此,足够大的"Packet buffer",或者称为FIFO 是非常必要的。intel家族的网卡,可以通过查看PBA的值确认其大小,有时候 RX 的buffer大于TX, 例如 PBS 64K, PBA 48K。通常将 RX FIFO buffer 大小定义为 PBA ,可在源码中查看:

oid e1000_reset(struct e1000_adapter *adapter)

{

u32 pba = 0, tx_space, min_tx_space, min_rx_space;

u16 fc_high_water_mark = E1000_FC_HIGH_DIFF;

bool legacy_pba_adjust = false;

switch (adapter->hw.mac_type)

{

case e1000_82542_rev2_0:

case e1000_82542_rev2_1:

case e1000_82543:

case e1000_82544:

case e1000_82540:

case e1000_82541:

legacy_pba_adjust = true;

pba = E1000_PBA_48K;

break;

case e1000_82545:

case e1000_82545_rev_3:

case e1000_82546:

case e1000_82546_rev_3:

pba = E1000_PBA_48K;

break;

case e1000_82547:

case e1000_82547_rev_2:

legacy_pba_adjust = true;

pba = E1000_PBA_30K;

break;

case e1000_82571:

case e1000_82572:

case e1000_80003es2lan:

pba = E1000_PBA_38K;

break;

case e1000_82573:

pba = E1000_PBA_20K;

break;

case e1000_ich8lan:

pba = E1000_PBA_8K;

}

请注意,就像前面提到的,pba = E1000_PBA_8K;

网卡错误诊断

如果发现网卡丢包,可以通过ethtool查看错误原因 ethtool -S ethX.

MegaRouterXeon-KARAM ~ # ethtool -S eth0

NIC

statistics:

rx_packets: 3282740738

tx_packets: 3279620759

rx_bytes: 1890275803477

tx_bytes: 1885940915317

rx_broadcast: 243768

tx_broadcast: 26050

rx_multicast: 1894634

tx_multicast: 67842

rx_errors: 0

tx_errors: 0

tx_dropped: 0

multicast: 1894634

collisions: 0

rx_length_errors: 0

rx_over_errors: 0

rx_crc_errors: 0

rx_frame_errors: 0

rx_no_buffer_count: 113102

rx_missed_errors: 10308

tx_aborted_errors: 0

tx_carrier_errors: 0

tx_fifo_errors: 0

tx_heartbeat_errors: 0

tx_window_errors: 0

tx_abort_late_coll: 0

tx_deferred_ok: 30151971

tx_single_coll_ok: 0

tx_multi_coll_ok: 0

tx_timeout_count: 0

tx_restart_queue: 4967999

rx_long_length_errors: 0

rx_short_length_errors: 0

rx_align_errors: 0

tx_tcp_seg_good: 102

tx_tcp_seg_failed: 0

rx_flow_control_xon: 30545078

rx_flow_control_xoff: 30730827

tx_flow_control_xon: 2799

tx_flow_control_xoff: 5653

rx_long_byte_count: 1890275803477

rx_csum_offload_good: 3081285221

rx_csum_offload_errors: 140979

rx_header_split: 0

alloc_rx_buff_failed: 0

tx_smbus: 0 rx_smbus: 3 dropped_smbus: 0

rx_no_buffer_count: 113102

如果出现这个类型的错误,可能原因是需要增加 "ring" 的大小。例如

MegaRouterXeon-KARAM ~ # ethtool -g eth0

Ring parameters for eth0:

Pre-set

maximums:

RX: 4096 RX

Mini: 0 RX

Jumbo: 0

TX: 4096 Current hardware settings:

RX: 1024 RX

Mini: 0 RX

Jumbo: 0

> ethtool -S eth1 内核协议栈对校验和错误的报文会丢弃。 NIC statistics:      rx_packets: 1859      tx_packets: 178      rx_bytes: 1063575      tx_bytes: 9516      rx_broadcast: 0      tx_broadcast: 0      rx_multicast: 0      tx_multicast: 0      rx_errors: 0      tx_errors: 0      tx_dropped: 0      multicast: 0      collisions: 0      rx_length_errors: 0      rx_over_errors: 0      rx_crc_errors: 0      rx_frame_errors: 0      rx_no_buffer_count: 0      rx_missed_errors: 0      tx_aborted_errors: 0      tx_carrier_errors: 0      tx_fifo_errors: 0      tx_heartbeat_errors: 0      tx_window_errors: 0      tx_abort_late_coll: 0      tx_deferred_ok: 0      tx_single_coll_ok: 0      tx_multi_coll_ok: 0      tx_timeout_count: 0      tx_restart_queue: 0      rx_long_length_errors: 0      rx_short_length_errors: 0      rx_align_errors: 0      tx_tcp_seg_good: 0      tx_tcp_seg_failed: 0      rx_flow_control_xon: 0      rx_flow_control_xoff: 0      tx_flow_control_xon: 0      tx_flow_control_xoff: 0      rx_long_byte_count: 1063575      rx_csum_offload_good: 1740      rx_csum_offload_errors: 119      alloc_rx_buff_failed: 0      tx_smbus: 0      rx_smbus: 0      dropped_smbus: 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值