排查 “Detected Tx Unit Hang”问题
实现功能:
使用自己已经分配的内存让skb->data指向,而不是使用alloc_malloc()。
部分代码如下:
/*
* build a new sk_buff
*/
//struct sk_buff *send_skb = kmem_cache_alloc_node(skbuff_head_cache, GFP_ATOMIC & ~__GFP_DMA, NUMA_NO_NODE);
struct sk_buff *send_skb = kmem_cache_alloc(skbuff_head_cache, GFP_ATOMIC & ~__GFP_DMA); if (!send_skb) {
//spin_unlock(&lock);
return NF_DROP;
} //printk("what2\n");
memset(send_skb, , offsetof(struct sk_buff, tail));
atomic_set(&send_skb->users, );
send_skb->cloned = ; send_skb->head = mmap_buf + ;
send_skb->data = mmap_buf + ;
第18行,mmap_buf是提前分配的内存。
在/var/log/messages中网卡驱动会输出错误信息:
ep :: 10g-host2 kernel: ixgbe ::00.0: eth2: Detected Tx Unit Hang
Sep :: 10g-host2 kernel: Tx Queue <>
Sep :: 10g-host2 kernel: TDH, TDT <>, <1ea>
Sep :: 10g-host2 kernel: next_to_use <1ea>
Sep :: 10g-host2 kernel: next_to_clean <>
Sep :: 10g-host2 kernel: ixgbe ::00.0: eth2: Detected Tx Unit Hang
Sep :: 10g-host2 kernel: Tx Queue <>
Sep :: 10g-host2 kernel: TDH, TDT <>, <1eb>
Sep :: 10g-host2 kernel: next_to_use <1eb>
Sep :: 10g-host2 kernel: next_to_clean <>
Sep :: 10g-host2 kernel: ixgbe ::00.0: eth2: Detected Tx Unit Hang
Sep :: 10g-host2 kernel: Tx Queue <>
Sep :: 10g-host2 kernel: TDH, TDT <>, <1ea>
Sep :: 10g-host2 kernel: next_to_use <1ea>
Sep :: 10g-host2 kernel: next_to_clean <>
Sep :: 10g-host2 kernel: ixgbe ::00.0: eth2: Detected Tx Unit Hang
Sep :: 10g-host2 kernel: Tx Queue <>
Sep :: 10g-host2 kernel: TDH, TDT <>, <1ea>
Sep :: 10g-host2 kernel: next_to_use <1ea>
Sep :: 10g-host2 kernel: next_to_clean <>
Sep :: 10g-host2 kernel: ixgbe ::00.0: eth2: Detected Tx Unit Hang
Sep :: 10g-host2 kernel: Tx Queue <>
Sep :: 10g-host2 kernel: TDH, TDT <>, <1ef>
Sep :: 10g-host2 kernel: next_to_use <1ef>
Sep :: 10g-host2 kernel: next_to_clean <>
Sep :: 10g-host2 kernel: ixgbe ::00.0: eth2: Detected Tx Unit Hang
Sep :: 10g-host2 kernel: Tx Queue <>
Sep :: 10g-host2 kernel: TDH, TDT <>, <1ec>
Sep :: 10g-host2 kernel: next_to_use <1ec>
Sep :: 10g-host2 kernel: next_to_clean <>
Sep :: 10g-host2 kernel: ixgbe ::00.0: eth2: Detected Tx Unit Hang
在排除各种原因后,定位为分配的mmap_buf存在问题。使用vmalloc()分配不正确,改为kmalloc()后正常。
《Linux内核设计与实现》第12.5节有解释,应该是:网卡设备要求分配的物理地址连续,而vmalloc()只是虚拟地址连续
排查 “Detected Tx Unit Hang”问题的更多相关文章
- Intel 82599网卡异常挂死原因
前提背景: 生产环境上,服务器网络突然断链,ssh连接失败. 问题初步定位: 查找内核日志,得到网卡异常信息 Jan 24 11:52:43 localhost kernel: ixgbe 0000: ...
- intel的网卡故障
现象: 机器键盘接入,敲入无反应:机器无法ping通,整台机器假死状态. 查看message的日志,日志为如下内容: Aug :: TSMIS-CF kernel: ::19.0: eth0: Det ...
- 无线电源传输 Wireless Power Consortium (WPC) Communication
Universally Compatible Wireless Power Using the Qi Protocol Wireless charging of portable electronic ...
- Class loading in JBoss AS 7--官方文档
Class loading in AS7 is considerably different to previous versions of JBoss AS. Class loading is ba ...
- linux内存管理之DMA
说起DMA我们并不陌生,但是实际编程中去用的人不多吧,最多就是网卡驱动里的环形buffer,再有就是设备的dma,下面我们就分析分析. DMA用来在设备内存和内存之间直接数据交互.而无需cpu干预 ...
- 教你如何用AST语法树对代码“动手脚”
个推安卓工程师,负责公司移动端项目的架构和开发,主导移动端日志管理平台系统架构和开发工作,熟悉前后端的技术线,参与个推SDK主要业务研发工作,善于解决项目中遇到的痛点问题. 作为程序猿,每天都在写代码 ...
- appium日志
2020-10-02 00:44:10:672 [Appium] Welcome to Appium v1.16.0 2020-10-02 00:44:10:673 [Appium] Non-defa ...
- 内核futex的BUG导致程序hang死问题排查
https://mp.weixin.qq.com/s/sGS-Kw18sDnGEMfQrbPbVw 内核futex的BUG导致程序hang死问题排查 原创: 王领先 58架构师 今天 近日,Had ...
- Java SDK夯住(Hang)问题排查
夯住(Hang)是指程序仍在运行,卡在某个方法调用上,没有返回也没有异常抛出:卡住时间从几秒到几小时不等. Java程序发生Hang时,应该首先使用 jstack 把java进程的堆栈信息保存下来 , ...
随机推荐
- quartz 调度
1.POI文件中导入包 <dependency> <groupId>org.quartz-scheduler</groupId> <artifact ...
- 水(NOIP模拟赛Round #10)
题目描述: 小Z有一个长度为的数列.他有次令人窒息的操作,每次操作可以使某个数字或.他当然是希望这些数字的乘积尽量小了.为了简化题目,你只需输出操作完成后的数列即可. ———————————————— ...
- shortcut(NOIP模拟赛)(裸的排序)
原题: Description Mirek有一条每天从他家去大学工作的最喜欢的路.这个路径由若干个部分组成,且每个部分是10米长的直线.每一个部分是直线连接(没有拐弯)上一个部分或垂直连接上一个部分. ...
- VMWare虚拟机如何与主机共享文件夹(最容易看懂的讲解)附图~
http://wenku.baidu.com/view/54ab9e19227916888486d776.html 新建好虚拟机并安装好系统后,在编辑虚拟机设置--选项进行以下设置: 点添加 选择你要 ...
- 使用aiohttp的一个小例子
#!/usr/bin/env python # encoding: utf-8 import aiohttp import asyncio import traceback import time i ...
- 链表各种操作及其实现方法(c实现)
链表是一种最简单的数据结构之一,经常会被面试官用来考察应聘者的基础扎不扎实,最近也到了求职季,所以我把自己对链表的一些理解写出来,希望能跟大家交流交流: 链表的概念其实挺简单,无非就是一个利用指针将数 ...
- 记录常见的HTTP请求错误
服务器提交了协议冲突. Section=ResponseHeader Detail=CR 后面必须是 LF 解决方案:winfrom 在app.config种添加 web 在 web.config种添 ...
- springBoot Feign Hystrix
1.引入依赖包 <!-- 引入关于 hystrix的依赖 --> <dependency> <groupId>org.springframework.cloud&l ...
- AC日记——Little Elephant and Numbers codeforces 221b
221B - Little Elephant and Numbers 思路: 水题: 代码: #include <cmath> #include <cstdio> #inclu ...
- AC日记——开关灯 codevs 1690
开关灯 思路: 线段树: bool懒标记维护: 更新区间时是区间总值减去当前值: 来,上代码: #include <cstdio> #include <cstring> #in ...