分类 system 中的文章

Ubuntu 20.04 Kdump + Crash 初体验

1. Kdump 工作原理介绍 内核崩溃转储指的是在内核异常情况时,将 RAM 中部分内容进行转储到磁盘或者其他存储中。当内核发生 panic 时,内核依靠 kexec 机制在预先保留的内存区域快速重启一个新的内核实例,预留内存区域大小可通过内核启动参数 crashkernel 指定。 为了实现 “双内核” 布局,Kdump 在内核崩溃后立即使用 kexec 引导到转储……

阅读全文

来来,让我看看你究竟在干什么?

1. 系统的线程栈跟踪(内核) 在某些特殊场景中,我们可能会遇到偶发系统内核 CPU 抖动,这时候我们可能需要知晓动时刻内核中的所有运行任务的一个快照,这种场景下 sysrq 可以完全满足我们的需求。 如果只是需要分析系统的热点路径,perf 会是一个比较好的选择。 1.1 sysrq 是什么? sysrq 代表的是 Magic System Request Key。开启了该……

阅读全文

Linux 进程管理

本文是技术团队内部分享的版本,目的是通过进程管理及调度器历史对于 Linux 进程管理的演进过程起到一个总览的作用,完整的 PDF 可以在这里 下载。水平有限,本文内容仅供参考,有错误欢迎指正。 1. 基础知识 进程类型 实时进程 非实时进程 CPU 资源占用类型 CPU 消耗性 (CPU-Bound) I/O 消耗性 (IO-Bound)……

阅读全文

使用 GDB + Qemu 调试 Linux 内核

1. 概述 在某些情况下,我们需要对于内核中的流程进行分析,虽然通过 BPF 的技术可以对于函数传入的参数和返回结果进行展示,但是在流程的调试上还是不如直接 GDB 单步调试来的直接。本文采用的编译方式如下,在一台 16 核 CentOS 7.7 的机器上进行内核源码相关的编译(主要是考虑编译效率),调试则是基于 VirtualBox 的 Ubuntu 20.04 系统中……

阅读全文

kpatch 热修 ipvs estimation_timer 内核延时问题

1. kpatch 是什么? livepatch 实时或动态内核修补允许为正在运行的内核提供功能增强,无需重新启动系统,这对于某些在线系统修复安全漏洞非常有帮助。 Kpatch 是给 Linux 内核 livepatch 的工具,由 Redhat 公司出品。最早出现的打热补丁工具是 Ksplice。但是 Ksplice 被 Oracle 收购后,一些发行版生产商就不得不开发自己的热补丁工具,分别是 Redhat 的 Kpatch 和……

阅读全文

【Linux负载系列-2】Linux CPU 使用率低 Load 负载高场景测试

1. Linux Load 负载高 在 Linux 系统上平均负载包括了运行的进程和正在等待运行的进程,也包括了不可中断状态执行磁盘 I/O 的进程( Uninterruptible Sleep))。这意味着在 Linux 上不能单用 CPU 余量或者饱和度,因为不能单从这个值来推断 CPU 或者磁盘负载。 Linux 系统中如果等待 IO 的进程多了,那么也会导致系统的平均负载升高,则是因为平均负……

阅读全文

【Linux负载系列-1】Linux 系统的平均负载(Load Avarage)

1. 平均负载(Load Average)概念 1.1 单核 CPU 系统 单个 CPU 的处理能力和负载情况可以用下图表达,如果为1.0 表明负载已经饱和,CPU 没有更多的处理能力: 图中的卡车等同于 CPU 的时间片概念(一般情况下对应于需要处理的进程),Linux 称之为运行队列长度。 运行队列长度 = 正在运行的 + 等待运行……

阅读全文