个人介绍
您好!我是dizzy,一位资深的Linux操作系统工程师,拥有超过5年的行业经验。我专注于Linux内核的定制和优化,具备深厚的技术功底和丰富的实践经验。
在程序员客栈,我希望能与志同道合的朋友交流分享。期待与您的合作!
工作经历
2022-01-10 -2023-07-28idea系统工程师
负责项目底层软件部分,包括方案制定、软硬件通信协议制定、驱动开发、业务应用软件开发等。
2018-09-10 -2022-01-01华为操作系统工程师
负责Linux内核Hack子系统特性开发和维护,包括内核热补丁、perf、probe、trace等。熟悉内核编译定制、内核开发、驱动编写、debug调优。
教育经历
2014-10-01 - 2018-06-30海外信息工程硕士
资质认证
技能
本项目是关于为特定的应用需求定制Linux内核的过程,以及在此过程中与开源社区的互动和贡献。项目的核心工作包括内核的定制化开发、性能优化以及bug的修复。 在与开源社区的互动方面,我积极参与了相关讨论,与社区成员进行了深入的技术交流,并成功提交了多个内核补丁(patch)。这些补丁经过社区的审核和测试后被合并到Linux主线。我熟悉了向Linux内核提交代码的整个流程,包括使用Git进行版本控制、使用邮件列表提交补丁以及参与代码审查。
本项目是为公司加速板卡设计实现的PCIe驱动程序,运行在Linux环境上。我作为团队唯一的驱动开发人员从项目最初的概念阶段开始深度参与整体通讯协议的制定,到最后完成实现并进行一系列的稳定性和性能测试。由于通讯协议使用的是PCIe,对内核的PCI驱动框架非常熟悉,也对PCIe通讯协议有一定的了解。 项目亮点如下: 1. 设计高效的通讯协议 挑战:与硬件工程师合作设计高效的通讯协议,需确保数据传输的高速性和可靠性。 解决:深入学习PCIe的物理层和传输层机制以及相关硬件的功能特性,从而设计出既适应硬件特性又能满足应用需求的通讯协议。 2. 封装并提供上层应用接口 挑战:开发易于使用且高度抽象的API,使上层应用能够轻松与PCIe设备进行通讯,而不必关心底层的复杂性。 解决:除驱动外还提供了应用层so,上层应用可以轻松集成,同时提供充分的文档和示例代码来辅助开发者理解和使用这些接口。 3. 驱动程序的调试和优化 挑战:在Linux环境下对PCIe驱动程序进行有效的调试和性能优化,确保在不同硬件和系统配置下的高性能和稳定性。 解决:编写多个测试用例,覆盖简单功能测试、系统集成测试、稳定性测试和性能测试,并利用Linux内核提供的工具如perf进行深入的调试和性能分析,持续迭代和优化代码,确保驱动程序的稳定性和高效性。
本项目的核心是在Linux操作系统的PPC64 V1架构下实现内核热补丁技术。热补丁技术允许在不重启系统的情况下动态更新内核,这对于需要高可用性的系统环境至关重要。开源内核支持PPC64 V2架构的内核热补丁,但产品硬件要求使用PPC64 V1,所以需要对比V1V2的ABI并做相关适配修改。 项目的主要工作包括两部分:一是对Linux内核进行定制化修改,使其能在PPC64 V1架构上支持热补丁技术;二是对现有的内核热补丁工具kpatch进行升级和改造,使其兼容PPC64 V1架构。这些改进不仅涉及内核代码的深度修改,还包括对kpatch工具的核心机制的理解和优化。 此项目的难点包括: 1. 熟悉PPC64 V1和V2架构的差异 挑战:对PPC64 V1与V2架构的细微差别有深刻理解是关键,因为这直接影响内核热补丁技术的实现方式和效果。 解决:通过深入研究PPC64架构的官方文档,以及分析现有的内核代码,来理解两个版本之间的差异。 2. 补丁制作对PPC64 V1的ELF文件格式的熟悉度 挑战:制作适用于PPC64 V1架构的内核热补丁,需要对该架构的ELF文件格式有非常详细的理解,特别是文件格式如何影响内存布局和执行流。 解决方法:研究ELF文件格式的具体实现细节,特别是针对PPC64 V1架构的特有特性。对该架构编译得出的vmlinux和ko文件的所有elf段落做深入分析。 3. 熟悉内核调试方法和流程 挑战:在Linux内核开发中,调试是一个复杂且关键的步骤,尤其是在热补丁涉及复杂的执行流跳转,给调试增添了难度。 解决方法:学习和实践使用各种内核调试工具,如qemu、probe等。同时,开发和维护详细的调试流程文档,确保在遇到问题时能快速定位并解决。