
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
taint可以理解为:内核被非标准或不可信模块污染了状态。比如你加载一个闭源模块、强制加载不匹配模块,内核会标记 taint。当前内核状态不再是纯净状态后续排查 kernel panic 时可信度下降可以避免许可证不明导致的 taint warning,并允许模块使用部分 GPL-only 符号。
这一节解决一个问题:资料里也把 Makefile、动态加载、 编译作为 Linux 内核模块入门的核心内容。假设我们有一个最小模块目录:就是上一节的代码:现在问题是:怎么把它变成:2. 最小 Makefile先看完整 Makefile:注意:这是很多人第一次写 Makefile 最容易错的地方。这句最关键。它的意思是:最后会生成:这里你容易疑惑:因为 Kbuild 的规则是:你告诉 Kbuild:
这一节讲网络监控。你前面学的是磁盘累计值,也是类似思路:它里面很多字段是,不是当前速率。
注册的退出函数,并释放模块资源。在性能监控项目里,加载 CPU/softirq 采集模块时,会在初始化阶段注册字符设备和采集缓冲区;加载时内核会检查模块格式、解析符号依赖,把模块代码放进内核地址空间,然后调用。表示当前没有其他模块或设备正在使用它,一般可以卸载。,内核会先检查模块引用计数,如果没有被使用,就调用。,它们对应模块加载、卸载、查看和内核日志观察。如果模块和当前内核版本不匹配,加载时可能
这一节讲磁盘 I/O。现在和/proc/stat更像:它里面很多字段也是,所以要两次采样做差。
MemFree这也是 Linux 内存监控里最容易被问的点。
这一节目标很简单:资料里的核心点是:内核模块是文件,通过动态加载进内核,通过卸载;模块没有 ,而是靠/注册入口和出口。先看完整代码:你现在不要纠结怎么编译,Makefile 下一节讲。这一节只看:代码结构和加载流程。它表达的是:所以这个模块本身没有业务功能,只是验证:3. 逐行解释3.1这是写内核模块必须要用的头文件之一。它提供这些东西:也就是:目前你只需要记住:它提供一些内核基础函数,比如:用户
加载时内核会解析模块、完成符号链接,然后调用初始化函数;在我的性能监控项目里,内核模块主要用于采集 CPU 和 softirq 这类高频内核指标,并通过字符设备和。项目里用内核模块把 CPU / softirq 这类高频内核指标暴露给用户态 Worker,Worker 通过字符设备和 mmap 读取,减少频繁 read 和数据拷贝开销。Linux 内核模块是一种运行时扩展内核功能的机制,编译后通常
我的项目里 Worker 会采集 softirq 指标,并结合网络吞吐、PPS、CPU softirq 时间和 load,一起判断服务器网络处理压力。你的项目资料里也明确:Worker 端有 CPU、内存、磁盘、网络、eBPF、用户态监控等多个采集模块,并且 softirq 可以通过内核模块暴露给用户态,最终统一聚合成。网卡收到包后会触发硬中断,硬中断里做少量处理,后续收包和协议栈处理会交给。增长
你之前学的/proc/stat是算 CPU 使用率;现在的是看系统负载压力。两者相关,但不是一个东西。







