记参加开源操作系统会议

参会OS2ATC2018感想,开始学习吧

记参加开源操作系统会议

   一直想向各路大神学习,写博客,记录自己的学习,然而万事开头难,总是担心自己写太烂,总是被自己的各种借口耽搁,虽然之前也有在公司内网写过一点。哈哈,借着这次的参会感想,我想开始在CSDN上的博客学习之路。
   这次正好有机会参加了这次在杭州举办的开源操作系统会议,在各路大神的侃侃而谈中,有了颇多的感悟。当然受限于我本身的技术水平,可能有错,请指正。

一、 先白话一下,个人感想

1)谈谈规范先行
Linux内核会议室,第二场ARM64服务器Linux的内核生态使能。谈到了一些Linux特性,不过我回味的还是规范先行。报告中提到的是设计规范,(报告中提到了软硬件解耦的方案,这个不复述了,接下来是讲讲我自己的感受)即使在众多开源源码可供参考的今天,我相信仍然有很多人也会一样遇到从0开始设计一个新的模块,软件设计是把需求转化为软件的重要环节,这个部分不能完全依赖于自身的水平,需要借助已有的方案(比如其他模块的架构、已知的类似架构规范)、设计方法(领域驱动、面向服务、自顶向下或者面向对象)或者设计工具(比如Devops工具链)等来进行规定。这样才能保证一定程度的软件质量。从Linux这边出发,内核源码无疑是我们的首要参考对象,其次是你开发的平台代码,还有一些别的开发指导。代码的设计总是迭代开发的,需要不断地参考,以及与你觉得可以讨论的伙伴讨论,毕竟独行侠还是少的,一个有准则的团队力量远远大于个人。

2)我们的BUG
Linux内核第一场讲述的是云计算环境下面临的可靠性挑战,里面提到了很多建议,我个人总结是如何有效的控制出错处理和有效的打印关键日志。我在之前的开发过程中,也遇到过很多各式各样的BUG,似乎总是做的同样的事情:出现bug,然后发现不了问题,添加打印,然后继续复现bug,出现bug,如此循环直到解决。这应该是程序员的苦恼之一吧,

3)我们的系统思考和热情
整个场听下来,有很多有意思的讨论,但是我更多的是听到了各路大神的系统性思考,和对技术的热情。比如Inter首席工程师董耀祖对未来内存技术的发展方向的推进,扩宽了我的视野,从目前的痛点从系统的考虑这个新的技术方向。再例如。死锁检测机制Lockdep的改进模型,将问题先建立一个模型,再根据模型来完成这个优化,并为社区贡献。等等。

二、具体的说说,技术心得

1)系统中的BUG
在内核场,首先说的是云计算环境下的面临的可靠性挑战,其实是有点像我们的黑匣子功能,记录不同的运行信息,用于后期分析。但是他们在这个基础上做了一点系统的思考,比如,如何可视化这些问题,可视化的性能画像总是要比单纯的日志更易于分析和讨论,内存故障隔离,增加了迁移失败时的retry机制,引入数据库,隔离出错页面,保证系统还能正常运行。或者增加智能解析等,帮助程序员先跳过重复的分析过程。
记参加开源操作系统会议_第1张图片
2)异构系统的SVA
这其实是共享虚拟地址,pagetable如何传递给另一个异构系统,报告中提到各种体系结构下的方案,其中ARM的架构下通过ATC。ATS访问SMMU从而访问pagetable。
记参加开源操作系统会议_第2张图片
3)死锁检测
报告中提到了lockdep的改进,以前只支持自旋锁的锁,主要是简单的回环检测。改进后支持读写锁,可递归锁,也就是说这些锁中,即使是回环的锁也可能不是死锁。
记参加开源操作系统会议_第3张图片
4)容器技术下的资源隔离技术
报告主要是描述了在容器技术下,面临的资源问题。
CPU:绑定CPU的隔离,让每个容器自己独占不同的CPU,但是这样一来,就有可能会造成CPU资源的浪费,但是容器间不干扰。共享CPU的情况下,CPU利用率高,但是容器间易相互干扰。报告中给的解决方案是采用 pre_cgroup的方式先做CPU的数据采集,并利用CFS来辅助限制CPU使用。同时,也提到了混合部署。
记参加开源操作系统会议_第4张图片
5)DCPMM
早晨的报告中,提供的Inter推出的未来新技术,DCPMM,大概的意思就是对内存的大小进行扩容,改进,速度比DRAM慢一点,但是大小确可以达到很多,让我们的程序设计不再受到内存的限制。并且辅助异构内存的控制系统,完成内存的整体方案。
记参加开源操作系统会议_第5张图片
6)AI
我是一名AI爱好者,所以不得不说说,在开源操作系统会议中,有AI系统的专题会场(听了1~2个专题,目前都在做集成各个算法平台, 开发出一套快速开发,通用的AI系统),同时,Linux内存会场的讨论中也常常提到怎么借助AI来解决目前的痛点。比如,智能日志分析。异构内存中,对热点使用的AI预测。资源隔离报告中,提供需要一套智能的学习框架,可以对系统进行自动的调参,让资源利用最大化。
记参加开源操作系统会议_第6张图片

三、保持技术的热情

未来程序员的技能应该是多样性的,在现在这个时代,工具的爆发将会让程序员的效率倍增,而学习和使用这些技能和工具会很快的提升自己的程序质量。
那么如何提升和学习呢:
1) 多看,看看业内目前的解决方案。
2) 多听,多听听各个大咖对具体技术的报告,投资自己,多参加这些会议
3) 多交流,多在各个开源社区上和不同的程序员讨论不同的问题
4) 精做,这里我没有写多做,我觉得我们可以先focus在一个技术方向上,精了以后再扩展,技术的理论都是相同的,这样我们学习才能更快。
5) 多写,写自己的学习,技术总结,当脑子里这些东西变成要发布的东西时,才能更加清晰自己的学习。

最后还是说说学习Linux的热情。我觉得只有到开源社区中,具体的产生贡献,在社区上进行问题的讨论,受到Linux大咖门的批评,才能成长。
先给自己定个小小目标,开始写学习博文吧。半年内完整的阅读完一本Linux内核书籍,并转化为自己的学习博文。

你可能感兴趣的:(OS2ATC2018参会感想,学习生活)