Red Hat Training

A Red Hat training course is available for RHEL 8

第 33 章 监控并调优 NIC 环缓冲

接收环缓冲在设备驱动程序和网络接口控制器(NIC)之间共享。该卡分配一个传输(TX)和接收(RX)环缓冲。名称意味着,环缓冲是循环缓冲区,溢出会覆盖现有数据。可以通过两种方法将数据从 NIC 移至内核,硬件中断和软件中断也称为 SoftIRQ。

内核使用 RX 环缓冲来存储传入的数据包,直到它们可以被设备驱动程序处理。设备驱动程序排空 RX 环,通常使用 SoftIRQ,将传入的数据包置于名为 sk_buffskb 的内核数据结构中,从而通过内核并开始其拥有相关套接字的应用程序。

内核使用 TX 环缓冲来保存为有线目的的传出数据包。

这些环缓冲位于堆栈的底部,是可能会发生数据包丢弃的关键点,进而会对网络性能造成负面影响。

33.1. 显示丢弃的数据包数量

ethtool 工具可让管理员查询、配置或控制网络驱动程序设置。

环缓冲的耗尽会导致计数器的递增,如 ethtool -S interface_name 的输出中的 "discard" 或 "drop"。丢弃的数据包表示可用缓冲区的填满速度要快于内核可以处理数据包的速度。

流程

  • 显示 enp1s0 接口的丢弃计数器:

    $ ethtool -S enp1s0