- 博客(14)
- 收藏
- 关注
原创 kpatch-build工具和livepatch原理分析
内核kpatch机制是函数级的热替换技术,主要包含四大主件: kpatch-build:用于将源码patch生成ko热补丁 patch module:指生成的ko热补丁,包括需要新的函数和被替换函数的记录信息 kpatch core module: kpatch核心代码模块,为新旧函数热替换提供接口,使用kpatch时候是kpatch.ko模块,使用livepatch的时候不存在,因为内核已经支持livepatch kpatch utility: ...
2021-06-06 23:12:40 4399 1
原创 kprobe实现原理解析
一、简介 kprobe是内核的动态探测工具,几乎可以探测任何一条内核指令。kprobe根据探测点类型可分为三种: kprobes, jprobes和kretprobes (也叫返回探测点)。 kprobes是可以被插入到内核的任何指令位置的探测点,jprobes则只能被插入到一个内核函数的入口,而kretprobes则是在指定的内核函数返回时才被执行。 kprobe...
2019-11-17 12:15:32 3015
原创 ubuntu 16.04 测试cgroup v2 io 隔离
cgroup v1不支持buffer write io 限制,cgroup v2由于采用unified 层级设计,mem子系统和blk子系统联动,可以准确追踪buffer write时page 的cgroup属主,因而可以实现buffer write io 限制。但ubuntu 16.04默认带的cgroup v1,需要手动开启cgroup v2。开启和测试cgroup v2步骤:...
2019-03-29 14:20:34 2431
原创 kmem_cache的alias问题导致lvm在线扩容crash问题分析
两个月前解决了lvm在线扩容的bug,当时未得空,现在得空记录一下,内核版本基于3.10.33。 线上万客云lvm在线扩容导致lvresize卡死,log 如下:[47572.794000] BUG kmalloc-192(0:docker_cloud) (Tainted: P B O): Objects remaining in kmalloc-192...
2019-02-28 15:19:53 1516
原创 bcache 写导致io hung问题的追踪
最近线上bcache机器爆出io hung的问题,出问题的机器占到灰度bcache的10%左右,其中一个日志如下:<3>[12041.639169@1] INFO: task qierouterproxy:22202 blocked for more than 1200 seconds.<3>[12041.641004@1] "echo 0 > /proc...
2019-02-19 19:41:01 2679
原创 内核kmalloc内存越界排查过程
<1>.现场分析 ,log信息如下:3 [ 60.623647@0] Unable to handle kernel paging request at virtual address ef8000044 [ 60.625413@0] pgd = e01a00005 [ 60.628250@0] [ef800004] *pgd=000000006 [ 60.631962@0...
2018-11-25 17:41:30 3741
原创 编译器优化导致xfs的assert失败问题追踪
最近公司arm机子上,xfs文件系统在一个目录快速创建文件的时候,如果在同一目录vim 创建新文件,会偶尔出现xfs文件系统爆出assert失败,并导致内核oops,卡死当前创建进程,内核没有死,但xfs已经变得不可用,任何文件操作都会卡死操作进程。 经过两周的排除,最终确定是Amlogic厂家提供的交叉编译工具gcc 4.9.0的bug,优化不当导致的。排查过程记录如下: (1)内核日...
2018-08-26 19:04:24 1120
原创 Linux中断和异常的区别
(1).中断是异步的,异常是同步的。 中断一般是外设发出的,异常一般是cpu主动发起的。(2).异常可睡眠,中断不可睡眠(3).中断恢复的时候执行中断的下一条指令,异常恢复时再次执行触发异常的指令。...
2018-03-23 13:44:32 664
原创 Git 处理合并冲突
git提交到远程代码库主分支之后,发现和别人的提交产生了冲突,一下是冲突处理流程:(1).git fetch origin master:temp 获取远程主分支的最新提交,并基于此分支重新命名该分支为temp分支。(2).git rebase temp 取消temp分支的提交,并把temp更新到远程的对应分支上,最后把temp的补丁应用到temp分支上。(...
2018-03-19 21:14:25 984
原创 嵌入式ubuntu上折腾安装coredump
ubuntu版本是16.04,内核版本是3.10.96,处理器为4核ARMv8.(1)首先确定内核支持 确定内核打开了CONFIG_ELF_CORE编译选项,对于一般的PC机,是默认支持的,但对嵌入式的Linux板子就不一定了. 使用的板子在配置了ulimit -c之后打开了coredump使能,每次文件崩溃会显示: Th...
2018-03-15 11:51:39 672
原创 Gerrit &GIT 代码提交过程
1 .克隆远程仓库代码,并完成本地仓库和本地仓库的关联 git clone xxx.git2.克隆远程分支到本地命名分支dev,并切换到本地分支dev(避免Head分离) git checkout -b dev origin/dev3 .添加工程代码 git add .4. 提交工程到本地仓库 git com...
2018-03-13 22:02:26 1031
原创 systemtap定位内核bug
本周在调试网卡驱动的时候遇到一个费解的bug,借助systemtap工具,费了一天的时间给定位出来了,以此做一个记录。 工作机环境是Ubuntu 14.04,内核版本3.14.8,两台这样的机子通过我们的网卡进行通信。网卡是基于fpga实现的PCIe接口的网卡,驱动是我写的单队列千兆网卡。当时两台主机client和server通过nc进行tcp连接,主机与网卡的pcie通信已经完全调通,但
2017-11-19 01:13:33 591
原创 Ubuntu上systemtap安装
听群里的弟兄们讨论Linux内核调试神器systemtap的神奇,自己也动手安装下玩玩,参照了前辈们的博客教程,并以此文做个简单的记录。 以下就是安装的过程: (一)安装elfutils,提供分析调试信息的库函数,及libcap-dev sudo apt-get install elfutils sudo a...
2017-11-17 00:08:04 2263
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人