《龙蜥开发者说》第七期来了!开发者和开源社区相得益彰,相得益彰。这些人在龙蜥社区的经历、实践总结、技术成长经验都很有价值。我们希望更多的人可以在这里看到科技的力量。本期故事,我们邀请到龙蜥社区开发者李文成分享《不忘初心,你一直都在》。开发商表示,这是一项长期活动。对于多次积极投稿分享的童鞋,我们还有一份神秘礼物鼓励他们!诚邀广大开发者分享真实经验,相互交友,共同学习,共同进步。本期故事主角:“龙蜥社区2021年度杰出贡献奖”获得者李文成;DragonLizardCommunityArmSIG核心成员,负责DragonLizard内核支持飞腾补丁的开发和维护,对Linux内核和网络协议栈研究有深入的了解。目前从事Arm64本地化CPU驱动开发,内核补丁维护,解决生态客户反馈的软件相关BUG。当我初心开悟,坚信大学时,最先接触的是电路基础知识。我对硬件课程产生了浓厚的兴趣,无法控制。于是,我开始了漫长而有趣的动手实践过程。我会经常使用模拟电路和数字电路的基础知识来阅读电路图和修复故障单板。作为一名教师和高级研究助理,我继续实践。书本上复杂的原理在我眼里逐渐变得简单。大四那年,我顺利考上了研究生,成为了我最喜欢的导师的学生,也有了更多接触电路图设计和程序开发的机会。在校几年的理论与实践相结合,我的软硬件基础知识得到了非常扎实的锻炼。从此,我怀着对Linux软件开发的满腔热情正式踏入嵌入式大门。初入职场,自然而然地选择了嵌入式Linux驱动开发和网络通信设备开发等领域的工作。其实刚参加工作的时候,我并不得心应手。我通过阅读《Linux 设备驱动程序》、《TCP/IP 详解》等相关书籍实现了快速的自我提升,同时研究了内核协议栈的实现,在学习理论的同时积累了实践,确保了自己的技术永远不会落后。在工作中,我尝试了很多不同的方向,比如从Linux内核驱动到用户态DPDK,智能家居的嵌入式开发,核心路由器开发等等。无论是自我提升还是工作探索,我都紧紧围绕Linux软件开发的初衷,丰富的经验为我目前从事国内CPU行业铺平了道路。浪潮已起,乘风而上随着我国科技的飞速发展,国产CPU如雨后春笋般涌现,产业呈现上升趋势。响应浪潮,几年前加入飞腾,负责网卡驱动的开发和维护,解决生态客户反馈等各种问题。每当遇到客户反馈的问题,我总是既紧张又兴奋。我很紧张,因为时间紧,任务重,就像拆炸弹一样。我很兴奋,因为我积累的知识和经验在实践中再次产生了价值。例如,一个虚拟机需要一个千兆网口支持30个组播流,每个流的双向收发速率不低于2Mb/s,每个流的丢包率低于10e-6in24小时。以前好好的时候,经常遇到测试几个小时就突然丢包的情况,不得不从头分析,但最后得益于对Linux协议栈的熟悉,总能找到一些蛛丝马迹并且每次都能顺利解决问题。让我举一个迄今为止给我留下深刻印象的问题场景的例子。客户在使用飞腾CPU作为网络产品时,发现有1/10,000的数据包是错误的,而且只有部分数据包的内容是错误的,而且错误的内容与Cache的大小有关。但是从软件的角度来说,Cache是??透明的。那个时候题目比较难,但是凭借我之前对网卡硬件工作原理的掌握,对Linux驱动的熟悉,对CPU架构的了解,还是云里雾里找到了。解决方案。每一次这样,我对Linux开发的信心都会增加,在这条路上我的行囊也会更加丰富。(图/Switch产品方块图)(图/报错范例)当你遇到龙蜥,懂得在Linux开发的圈子里,你就经常会遇到各种开源社区,参与社区,积极贡献技术力量.社区生活是我职业生涯中不可或缺的重要组成部分。直到2021年,我认识了龙蜥操作系统开源社区(以下简称龙蜥社区)。那时,飞腾已经加入了龙蜥社团,成为了理事会的一员。作为飞腾代表,参与了ArmSIG组的共建,成为了主要维护者。在社区的日常生活中,除了定期参加每两周一次的技术交流会,轮流主持与维护者代表的会议,同步工作进度外,我还会利用社区平台与大家分享技术每个人。通过参与社区工作,我不仅有机会与志同道合的朋友时不时交流,也有效锻炼了自己的沟通和表达能力(技术例会见SIG)。在龙蜥社区的日常生活中,我主要负责飞腾CPULinux内核补丁的开发和维护。我记得有一次我印象很深。FIO测试在阿里云服务器DragonLizard操作系统上进行,48小时内出现少量机器随机死机。获得有关此问题的反馈有点棘手。问题在于时间是随机的、不确定的,往往需要很长时间才能测试,快速复现成为解决问题的关键。经过反复尝试,我发现跨渠道FIO在大压力测试下很容易重现。这时内核看门狗经常超时,分析发现是跨通道时中断聚集。于是不断阅读分析gic中断处理的逻辑代码,发现是跨通道的中断分配逻辑有问题,才导致出现这种现象。于是我们修改代码后进行测试,最终在较短的时间内没有出现看门狗超时导致内核卡死的问题。就在我们以为问题解决的时候,现实打了我们一个耳光,48小时内还是死机了,而且这次死机并没有打印任何信息,感觉比上次有点坑爹。想了想,怀疑是CPU跑路了,只能接模拟器调试了。事实证明是这样的。我们通过查看IO和内存访问的误码率发现了问题。最后通过调整固件参数减少误码解决了问题,并将补丁提交到龙蜥社区。到此为止,我感到如释重负。至此,我们可以发现,每一个复杂的问题,往往都是由多种原因造成的,都需要深入的技术积累和多方面的分析才能解决,而这些技术积累又源于不忘初心。难能可贵的是,我在龙蜥社区接触到了很多行业大佬。在与大家的交流中,我不断地扩展着自己的知识面。我像海绵一样吸收新知识,不忘进步。值得一提的是,龙蜥大讲堂的直播我基本上都是按时看的。比如听完《SIMD 指令集在 OpenJDK 中的现状与未来》,很快就明白了OpenJDK中SIMD是如何优化的,优化了哪些方面,以及以后使用SVE指令能带来更好的性能提升等等。每次听分享的时候技术大佬,感觉豁然开朗,在最短的时间内吸收了很多先进的技术和思想。本人非常荣幸在龙蜥社区开展交流合作的过程中获得龙蜥社区2021年度“突出贡献奖”。这是我参与社区建设以来,第一次得到社区的认可。当然,这也是我自己努力的结果。这也更加坚定了我不断进步,继续回馈社会的信心。(图/荣获龙蜥社区2021年度“杰出贡献奖”)最后,期待未来飞腾CPU和龙蜥操作系统产品的适配,为社区做出更多贡献。也期待在社区中聚集更多志同道合的朋友,为国家基础设施的开源贡献一份力量!欢迎大家加入ArmSIG共建,SIG地址:https://openanolis.cn/sig/ARM...——END——
