使用perf工具导致系统hang死的原因
【perf工具导致系统hang住的原因是触发了低版本kernel的bug】
今天在测试服务器做压测,运行perf record做性能分析时,系统再次hang住了,这次在系统日志中记录了一些有用的信息,如下
Dec 25 14:37:05 kernel: BUG: soft lockup - CPU#1 stuck for 67s!
通过在网上搜索,确认这是linux kernel的一个bug,详细描述如下:
https://bugzilla.redhat.com/show_bug.cgi?id=843640
该bug在kernel 3.5.4修复,
This Linux kernel change, a part of the Linux 3.5.4 release, is about uprobes: Fix mmap_region()’s mm->mm_rb corruption if uprobe_mmap() fails.
也有用户反馈过使用systemtap工具1.8版本也可能触发以上bug
https://sourceware.org/bugzilla/show_bug.cgi?id=14348
【结论】
perf是linux性能分析的一个核心工具,在CentOS 6.4的系统中,kernel version是2.6.32,有一定的概率会触发上面的bug,导致系统hang住。
在我们新升级的CentOS 7.4的系统上,kernel version是3.10.0,已修复上面的bug,可以放心使用了。
数据库运维经验分享&MySQL源码学习漫漫路

使用perf工具导致系统hang死的原因的更多相关文章
- 内核futex的BUG导致程序hang死问题排查
https://mp.weixin.qq.com/s/sGS-Kw18sDnGEMfQrbPbVw 内核futex的BUG导致程序hang死问题排查 原创: 王领先 58架构师 今天 近日,Had ...
- perf工具crash的问题
perf抓取时系统crash的情况.找前同事了解到perf工具导致系统crash的一种情况, perf工具默认是使用cycles,这个硬件事件是使用NMI,可能会导致内核错误. 之前文档上的perf命 ...
- Linux 系统假死的解决方案
Linux 系统有时因为软件不兼容或未知 bug,导致系统假死.比如我的 Ubuntu 14.04 最近使用 vscode 时偶尔会导致系统假死,即鼠标可以移动,但点击无反应. 此时可试试如下解决方案 ...
- 如何定位 golang 进程 hang 死的 bug
之前在 golang 群里有人问过为什么程序会莫名其妙的 hang 死然后不再响应任何请求.单核 cpu 打满. 这个特征和我们公司的某个系统曾经遇到的情况很相似,内部经过了很长时间的定位分析总结,期 ...
- Perf工具
前段时间Linux下用nmon监控程序的运行,发现CPU的使用率很高,系统态Sys的比例很高.程序的速度不是很快,怀疑和上面的原因有关. 分别使用perf record,perf report和top ...
- SUSE11sp3 perf工具安装过程
工作环境是suse11sp3系统(内核版本3.0.101-0.47.90-default),需要通过perf排查系统性能问题,但是默认是没有perf工具的. 在网上搜索了一下,需要linux-tool ...
- Tomcat9.0.13 Bug引发的java.io.IOException:(打开的文件过多 Too many open files)导致服务假死
问题背景: 笔者所在的项目组最近把生产环境Tomcat迁移到Linux,算是顺利运行了一段时间,最近一个低概率密度的(too many open files)问题导致服务假死并停止响应客户端客户端请求 ...
- 【Windows系统】win10系统假死,窗口不能动,鼠标能动或不能动,最后蓝屏显示错误码: VIDEO_DXGKRNL_FATAL_ERROR 的解决办法
1. 问题的出现过程 最近博主自己用的 windows10 系统就碰到了这个问题. 一开始出现这个问题的征兆是鼠标会时不时地卡顿,一出现卡顿就会等个 1-3秒才能动.然后频繁卡顿(注意,这里根据经验就 ...
- linux中/etc/fstab文件删除或修改了,导致系统无法启动
在linux中,/etc/fstab文件是磁盘挂载的问题,若该文件不小心给修改了,或者被删除了,那么就会导致系统无法重启.因为/etc/fstab文件是记录磁盘挂载的信息,若该文件出现了问题,那么对应 ...
随机推荐
- mysql原理~二阶段提交
一 简介:今天咱们来聊聊 mysql 两阶段提交二 事务过程 perpare-commit 两个过程1 perpare阶段 redo日志 1.设置undo state=TRX_UNDO_P ...
- 前端 - js方式Ajax/ jquery方式Ajax / 伪 ajax /伪ajax 进阶方式
DJANGO环境搭建: 目录文件: 关闭CSRF 添加目录文件路径 配置url 视图配置: index页面配置: 测试:(成功) 进入正题: ajax 通过GET提交数据至后台: <!DOCTY ...
- 在ASP.NET Web Forms中用System.Web.Optimization取代SquishIt
将一个ASP.NET Web Forms项目从.NET Framework 4.0升级至.NET Framework 4.5之后,发现SquishIt竟然引发了HTTP Error 500.0 - I ...
- mysql系列十三、mysql中replace into和duplicate key的使用区
一.创建测试表 1.创建唯一索引"b" CREATE TABLE `test2` ( `id` int(10) NOT NULL AUTO_INCREMENT, `a` varch ...
- Centos socket TCP代码
一.功能描述: 能够在Centos中创建TCP socket,实现Client给Server发送消息,Server能够Client发送消息. 二.代码如下: ①client代码: #include & ...
- Memcache是谁,它为什么而奋斗?【内容转】
MemCache是什么 MemCache是一个自由.源码开放.高性能.分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高 ...
- java开发之——[接口回调]
一.回调的含义和用途 1. 什么是回调? 一般来说,模块之间都存在一定的调用关系,从调用方式上看,可以分为三类:同步调用.异步调用和回调.同步调用是一种阻塞式调用,即在函数A的函数体里通过书写函数B的 ...
- 使用 IIS 在 Windows 上托管 ASP.NET Core
参考微软文档: https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/iis/index?tabs=aspnetcore2x 将as ...
- vue系列之项目打包
vue完成项目后,如何打包成静态文件,并且用Node调试 打包 1.修改config里面的index.js里面的productionSourceMap为false,默认情况是true(true代表打包 ...
- linux POSIX 信号量介绍
信号量一.什么是信号量信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)使用.多线程可以同时运行多个线程函数完成功能,但是对于共享数据如果不加以锁定,随意改变共享数据的值会发生 ...