# linux-realtime-probe-tool **Repository Path**: guohaocs2c/linux-realtime-probe-tool ## Basic Information - **Project Name**: linux-realtime-probe-tool - **Description**: test - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-03-04 - **Last Updated**: 2024-12-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # proj123-linux-realtime-probe-tool Linux 内核实时性瓶颈分析工具 ### 项目描述 在工业控制、机器人控制领域中越来越多使用Linux操作系统,但Linux系统在实时性方面天然不具备优势。为了改善Linux实时性,参考eBPF或perf等相关技术原理,研发出一个探针型的工具用于分析造成中断较高的原因,便于内核程序员对症下药。通过解决有限高延迟路径,从而达到让Linux在多种高负载场景下仍然能够长期保持可接受范围内的延迟。 ### 所属赛道 2022全国大学生操作系统比赛的“OS功能设计”赛道 ### 参赛要求 - 以小组为单位参赛,最多三人一个小组,且小组成员是来自同一所高校的本科生/研究生 - 如学生参加了多个项目,参赛学生选择一个自己参加的项目参与评奖 - 请遵循“2022全国大学生操作系统比赛”的章程和技术方案要求 ### 项目导师 - gitee @guohaocs2c - email: guohao@kylinos.cn ### 难度 高 ### 特征 - 需要了解linux内核驱动开发流程 - 需要了解linux内核常用数据结构使用方法 - 需要了解linux内核有效信息检索方法 - 需要了解linux中断原理 ### 参考文档 https://www.kernel.org 《Linux设备驱动开发第三版》 《深入Linux内核架构(中文版)》 ### License GPL-3.0 ### 预期目标 **注意:下面的内容是建议内容,不要求必须全部完成。选择本项目的同学也可与导师联系,提出自己的新想法,如导师认可,可加入预期目标** **第一题:内核模块基础框架实现** 1. shell脚本能够使用自研内核模块的procfs机制与自研内核进行字符串读写 2. 自研内核模块内部需要对用户态输入的数据进行分析,并使用链表对数据进行格式化存储 3. 自研内核模块内部使用cache机制对格式化存储数据进行存储 4. 该工具需要支持开机自启动,读取指定配置文件下发到自研内核模块中 **第二题:探针工具实际内容实现** 以题目一为基础,工具需要追加下列功能: 1. 自研内核模块增加硬件中断号参数、阈值参数、模块开关,可通过shell工具进行配置和修改 2. 自研模块能够根据shell配置的硬件中断号对指定中断或全部中断的关闭中断时长进行检测,精度需要达到纳秒级别 3. 自研内核模块能够根据shell配置的阈值参数进行数据过滤,只有关闭时长大于该阈值时才会触发数据抓取操作,抓取内容包括使用该中断的进程相关信息,如调用栈、持有锁、文件、socket等敏感信息 4. 抓取后的数据需要使用cache机制存储到内核链表中。shell工具可以通过procfs读取所有抓取到的数据,也可以清空所有抓取到的数据。 **(可选)第三题:工具稳定性验证和实际效果测试** 以题目二为基础,工具需要追加下列功能: 1. 能够在内核态正常长时间运行,不会造成内存泄漏和系统卡顿 2. 需要在高负载场景进行工具的功能性和稳定性测试,包括CPU型高负载、内存型高负载、IO型高负载、中断型高负载、综合型高负载