自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 4348 1

原创 ebpf原理分析

ebpf原理解析

2020-03-17 10:50:48 10244 1

原创 kprobe实现原理解析

一、简介 kprobe是内核的动态探测工具,几乎可以探测任何一条内核指令。kprobe根据探测点类型可分为三种: kprobes, jprobes和kretprobes (也叫返回探测点)。 kprobes是可以被插入到内核的任何指令位置的探测点,jprobes则只能被插入到一个内核函数的入口,而kretprobes则是在指定的内核函数返回时才被执行。 kprobe...

2019-11-17 12:15:32 2987

原创 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 2422

原创 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 1510

原创 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 2669

原创 内核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 3730

原创 编译器优化导致xfs的assert失败问题追踪

 最近公司arm机子上,xfs文件系统在一个目录快速创建文件的时候,如果在同一目录vim 创建新文件,会偶尔出现xfs文件系统爆出assert失败,并导致内核oops,卡死当前创建进程,内核没有死,但xfs已经变得不可用,任何文件操作都会卡死操作进程。 经过两周的排除,最终确定是Amlogic厂家提供的交叉编译工具gcc 4.9.0的bug,优化不当导致的。排查过程记录如下: (1)内核日...

2018-08-26 19:04:24 1108

原创 Linux中断和异常的区别

(1).中断是异步的,异常是同步的。        中断一般是外设发出的,异常一般是cpu主动发起的。(2).异常可睡眠,中断不可睡眠(3).中断恢复的时候执行中断的下一条指令,异常恢复时再次执行触发异常的指令。...

2018-03-23 13:44:32 660

原创 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 670

原创 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 1028

原创 systemtap定位内核bug

本周在调试网卡驱动的时候遇到一个费解的bug,借助systemtap工具,费了一天的时间给定位出来了,以此做一个记录。   工作机环境是Ubuntu 14.04,内核版本3.14.8,两台这样的机子通过我们的网卡进行通信。网卡是基于fpga实现的PCIe接口的网卡,驱动是我写的单队列千兆网卡。当时两台主机client和server通过nc进行tcp连接,主机与网卡的pcie通信已经完全调通,但

2017-11-19 01:13:33 586

原创 Ubuntu上systemtap安装

听群里的弟兄们讨论Linux内核调试神器systemtap的神奇,自己也动手安装下玩玩,参照了前辈们的博客教程,并以此文做个简单的记录。   以下就是安装的过程:    (一)安装elfutils,提供分析调试信息的库函数,及libcap-dev      sudo apt-get install elfutils sudo a...

2017-11-17 00:08:04 2260

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除