1. 背景
本文介绍Linux内核协议栈标准实现中,关于rx_page_cache的log_mult_limit参数的作用、机理和常见值。以对Linux内核协议栈同网卡之间进行数据交互的资源有一个切片认识
2. log_mult_limit的值与位置
cat /sys/class/net/enp65s0f0np0/rx_page_cache/log_mult_limit
3. Linux从网卡到应用收包流程机制
3.1 先看Linux收包机制
先看Linux数据收包机制:累计3次:
- 从网卡 DMA 到 ringbuffer(循环缓冲区,缓冲区有多,具体个数等于eth的channel,缓冲区深度等于eth的rx depth根据ethtool -g查看),由网卡的DMA操作
- 从ringbuffer 到 rx page(存在形式是skb),有内核协议栈中的ksoftirqd处理。这里的log_mult_limit就是linux内核的一个限制参数,限制这个rx page的内存总大小。
- 从内核态 到 用户态,内核处理