我们来详细了解一下内核的内存模型,为了达成了解的目的,我们从内核的两个宏函数入手 page_to_pfn、pfn_to_page 内核提供了两个宏来完成 PFN 与物理页结构体 struct page 之间的相互转换。它们分别是 page_to_pfn 与 pfn_to_page,先看一下内核的这两个宏函数 #define page_to_pfn …
客户环境发生无故重启的现象,查看ipmi也是正常的 环境crash时的调用栈 crash> bt PID: 24715 TASK: ffff883f3bedef20 CPU: 17 COMMAND: "CPU 3/KVM" #0 [ffff883e962d38a0] machine_kexec at ffffffff810…
概述 gdb我们大家应该已经很熟悉了,在使用gdb的场景一种是attach在running的进程,但是这种可能会影响进程的运行甚至我们在生产环境导致环境出现意想不到的问题,所以一般不建议在生产环境直接使用gdb,那我们如何调试进程呢?下面浅述一下自己的方法。 回答上面的问题一般就是进程在发生一些错误导致panic时产生了一个coredump文件,我…
内存分页机制 Linux的分页机制用来实现以页(Page)为单位的虚拟内存系统,而具体的寻址方法则是逻辑地址经过分页机制的处理转换为物理地址。 控制寄存器 CR0 Bit Name Full Name Description 0 PE Protected Mode Enable If 1, system is in protected mode, …
mm_struct 分析 上一节了解了linux(x86)的分页机制,其中有提PGD只要是来源于mm_struct,为了解进程内存相关信息,详细了解一下内存描述符的结构体--mm_struct。 mm_struct定义在include/linux/mm_types.h中,其中抽象出来的进程地址空间,如下图所示: linux的进程作为task_str…
mm和active_mm 用户态进程 tsk->mm = tsk->active_mm ---->指向内存地址; 内核态进程 tsk->mm = NULL tsk->active_mm = pre_tsk->active_mm; 具体可以参考这个链接: active_mm https://zhuanlan.zhi…
问题描述 虚机kernel panic无法起来,无法查看任何日志,找不到有效的定位和分析,grub被隐藏,无法手动修改grub 解决思路 找到到虚机挂在的盘,attach到其他机器上 挂载attach上的盘,修改grub.cfg等其他文件,可以进入系统; 设置cmdline记录日志 具体操作 创建attach的盘 ()[root@node-21 /…
object tree irqbalance是在一个周期内统计各个cpu的中断情况,重新对终端在分配,实现cpu均衡,其中有个比较重要的概念是 "object tree" object tree是通过系统的拓扑结构建立的分层结构.主要是NUMA node/package/cache/cpu将系统由上而下划分为四层:node-&g…
我们一般系统的驱动文件都是以rpm包的形式给出,在安装时rpm的spec文件会将ko文件会自动放置在某个地方并生成相应的信息使得在驱动文件在重启的时候被自动加载,但有时候我们只有ko文件在手动ismod之后重启驱动无法自动加载可能会导致系统无法正常运行,下面说一下针对单独的ko文件如何让kernel自动加载 编译生成hifc_sdk.ko和hifc…
ovs-vswitchd 进程随机被 kill 开始怀疑是进程被kill掉了,经过查看日志,应该是服务被正常stop了,并不是被异常kill了,所以后面主要是调研是谁主动stop该服务 是否有进程通过systemctl stop ovs-vswitchd关闭服务? 通过修改/usr/share/openvswitch/scripts/ovs-ctl…