作者 | 马超
责编 | 胡巍巍
出品 | CSDN(ID:CSDNnews)
1月9日,腾讯正式开源其云原生操作系统内核TencentOS Kernel(GitHub地址:https://GitHub.com/Tencent/TencentOS-kernel),笔者看到,在GitHub上发布几小时后,该项目已经获得了近百个Star。
在十年前,业界普遍流传着一句话叫做“代码正在吞没世界”,后来又说“互联网世界的一切源自开源”。而直到最近,人们才真正醒悟,原来云原生才是背后的那个大BOSS,凡是不使用云的都将落后,都无法做到敏捷,跟不上时代。 TencentOS Kernel恰恰是开源+云原生的典范,其定制于Linux社区长期支持的4.14.105版本,在资源调度弹性、容器支持、系统性能及安全等层面,都做了深度优化。该系统的开源,可以帮助行业大幅提升云上资源的利用效率、降低运营成本,同时获得更加安全可靠的业务运行环境。在2019年腾讯Techo开发者大会上,腾讯正式宣布将通过“自下而上”与“自上而下”相结合的方式,推进开源工作。腾讯还建立对外开源管理办公室,对开源项目进行指导和帮助,为开发者提供社区合作交流机会,建设以开源为核心的技术生态圈。
笔者刚刚在GitHub上做了一下统计,截止1月9日下午,腾讯在GitHub上发布的总项目数达到93个,Star数超27万;而且其开源项目很多都堪称重磅,比如腾讯把以性能RPC开发框架TARS及轻量化服务方案TSeer,捐赠给Linux基金会,而微信Web服务框架WeUI,一经发布就广受好评。腾讯在操作系统方面,也是动作不断,比如TencentOS Kernel的兄弟——Tencent OS Tiny,这个才刚刚问世的IoT操作系统,凭借其低功耗、低资源占用、模块化、安全可靠等特点,目前在GitHub上获得3700颗Star。在目前超大规模计算的时代,提升效率、降低成本是最基本的诉求。而云原生最大的特点,就是可持续交付和微服务化,将容器打造成微服务的运行载体。但是,现在的通用Linux系统内核,并不是为容器+微服务的云原生架构所设计,在很多方面,甚至不太合适云原生,但是TencentOS Kernel做了很多直面痛点的优化工作:ARM64架构的内核热补丁方案: 内核热补丁技术是一种无需重启服务器,即可实现修改内核运行时代码的技术。基于该技术,可以在不影响业务正常运行的情况下,修复内核Bug或者安全漏洞,以提高运营效率、底层平台的稳定性和可用性,并使得业务运营体验有效提升。目前,面向互联网的云服务,每天都会面对数量众多的攻击事件,及时针对内核漏洞进行热补丁升级,是云服务安全运营的最低要求。可是,当下其它Linux内核,针对在云计算中被广泛应用的ARM架构设备,还缺乏热补丁支持,不过TencentOS Kernel填补了这个空白。TencentOS Kernel基于Kpatch框架,开发了ARM64热补丁特性。Kpatch在内核中,是基于ftrace实现内核函数的替换,类似于ftrace的动态探测点,不过不是统计某些运行数据,而是修改函数的运行序列:在函数运行某些额外的代码之后,略过旧函数代码,并跳转至新函数。而在用户态中,则通过Kernel源码编译内核,打上补丁后再次编译内核,通过分析两次目标文件的变动情况,生成diff.o,并通过解析diff.o生成最终的patch.ko,有关这个方面的实现,令人拍案叫绝,笔者后续计划专文详述此部分原理。由于容器是特殊的进程,不同容器之间,并不能像同一操作系统下的进程间,那样进行共享,安全隔离始终是容器平台的核心问题。而其它版本的Linux内核提供的隔离特性,远远不能满足容器隔离的实际需求内核中,/proc文件系统中,大部分信息没有实现namespace功能,隔离性根本无从谈起。TencentOS Kernel从容器角度出发对于cpuinfo、stat、loadavg、meminfo、vmstat、diskstats、uptime等进行了隔离增强,保证容器中的应用,能获得正确的系统状态信息。TencentOS Kernel还提供进程GDB禁止功能,阻止跨进程获取内存,加载动态库等,保障业务进程的数据安全。并且针对容器内外进程PID对应关系的痛点,做出了优化,在内核参数kernel.watch_host_pid = 1时,容器内可以通过读取/proc/self/hostinfo文件,来获取容器内进程在容器外的真实pid。更重要的是,TencentOS Kernel待Push的版本中,还特别提到,将提供包括NVMe IO隔离等特性,这将彻底解决IO控制组在多队列设备场景资源利用率低,不支持按比例隔离等问题,保证了不同场景下的IO隔离效果。TencentOS Kernel针对容器的特性,实现了专门的调试算法,在离在线业务混布场景下收益十分显著。笔者看到,其离线调度算法也即将Push,在不影响在线业务质量的前提下,整机的CPU利用率最高提升了3倍,部分业务场景下可将整机CPU利用率提升至90%。 性能方面,TencentOS Kernel针对计算、存储和网络子系统均经过独有的优化,例如PAGE CACHE LIMIT功能,限制Page Cache的使用率,尽量使系统剩余的内存能够满足业务的需求;TencentOS Kernel还新增多个sysctl/proc控制接口,内核启动参数等来优化用户体验。IT业与传统行业最大的不同,就是其背后还隐藏着侠义江湖的影子,笔者相信腾讯此次怀着巨大诚意开源的TencentOS Kernel,也必将能从开源社区中,得到中肯的意见与支持。开源是武林高手下场比武,这种不断交流切磋的过程,必将提高各门派的武功水准。在此笔者也由衷希望,腾讯今后能开源更多优质的项目,推动行业良性发展。
热 文 推 荐
☞中国程序员在美遭抢劫电脑遇害,数百人悼念
☞2019,不可错过的NLP“高光时刻”
☞详解CPU几个重点基础知识
☞在以太坊上开发 Dapp 的瓶颈和门槛有哪些?| 博文精选