首先请允许笔者在博客中拉一下票,如果觉得文章不错,请各位读者扫一下下面的二维码,支持下!

1月9日,腾讯正式开源了其云原生操作系统内核TencentOS Kernel(Github地址:https://github.com/Tencent/TencentOS-kernel),笔者看到在Github上发布几小时后,该项目已经获得了近百个Star。

在十年前业界普遍流传着一句话叫做“代码正在吞没世界”,后来又说“互联网世界的一切源自开源”,而直到最近人们才真正醒悟原来云原生才是背后的那个大BOSS,凡是不使用云的都将落后,都无法做到敏捷,跟不上时代。

TencentOS Kernel可谓是开源+云原生的典范,定制于LINUX社区长期支持的4.14.105版本,在资源调度弹性、容器支持、系统性能及安全等层面都做了相应优化。该系统的开源及应用可帮助客户大幅提升云上资源的利用效率,降低运营成本,同时获得更加安全可靠的业务运行环境。

腾讯开源惊喜不断

笔者在前文《腾讯“疯狂”开源》中曾经介绍过。在去年腾讯Techo的开发者大会上,正式对外宣布将向着 “自下而上”与“自上而下”相结合的协同式推进开源工作。建立对外开源管理办公室,对开源项目进行指导和帮助,为开发者提供社区合作交流机会,建设以开源为核心的技术生态圈。

笔者刚刚在Github上做了一下统计,目前腾讯在Github上发布的总项目数达到95个,Star数近27万;而且其开源项目很多都堪称重磅,如在18年腾讯将其高性能RPC开发框架TARS及其轻量化名字服务方案TSeer捐赠给Linux基金会;微信Web服务框架WeUI更是一经发布就广受好评。

腾讯在操作系统方面也是动作不断,比如TencentOS Kernel的兄弟- Tencent OS Tiny,这个才刚刚问世的Iot操作系统,凭借其低功耗、低资源占用、模块化、安全可靠等特点,目前在Github上获得3.7k颗star。有关这个项目笔者之前也曾经撰文《腾讯Tiny OS组合NB-loT,值得程序员一试吗》做过详尽介绍。

云原生TencentOS Kernel初体验

在目前超大规模计算的时代,提升效率、降低成本是最基本的时代诉求。而云原生的最大的特点就是可持续交付和微服务化,将容器打造成微服务的运行载体。

但是现在的通用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等进行了隔离增强,保证容器中的应用能获得正确的系统状态信息。还提供进程GDB禁止功能,阻止跨进程获取内存,加载动态库等,保障业务进程的数据安全。

并且针对容器内外进程PID对应关系的痛点,做出了优化,在内核参数kernel.watch_host_pid = 1时,容器内可以通过读取/proc/self/hostinfo文件来获取容器内进程在容器外的真实pid。

更重要的是,TencentOS Kernel待push的版本中还特别提到了,将提供包括NVME IO隔离等特性,这将彻底解决IO控制组在多队列设备场景资源利用率低,不支持按比例隔离等问题,保证了不同场景下的IO隔离效果。

CPU弹性调度算法:TencentOS Kernel针对容器的特性实现了专门的调试算法,在离在线业务混布场景下收益十分显著。在不影响在线业务质量的前提下,整机的CPU利用率最高提升了3倍,部分业务场景下可将整机CPU利用率提升至90%。

性能方面,TencentOS Kernel针对计算、存储和网络子系统均经过独有的优化,例如PAGE CACHE LIMIT功能,限制page cache的使用率,尽量使系统剩余的内存能够满足业务的需求;TencentOS Kernel还新增多个sysctl/proc控制接口,内核启动参数等来优化用户体验。

后记

IT业与传统行业最大的不同,就是其背后还隐藏着侠义江湖的影子,笔者相信腾讯此次怀着巨大诚意开源的TencentOS Kernel,也必将能从开源社区中得到中肯的意见与支持。开源则是武林高手下场比武,而在这种不断交流切磋的过程中,必将提高各门派的武功水准。所以在此笔者也由衷希望腾讯今后能够开源更多优质的项目,推动行业良性发展。

腾讯开源开门红,云原生操作系统TencentOS Kernel正式登陆Github相关推荐

  1. 国内首发,这款 Serverless 云原生一体化部署工具正式开源!

    12 月 19 日,腾讯在 2020 Techo Park 开发者大会上集中发布了三大开源项目.其中,云开发 CloudBase Framework 作为腾讯开源的国内首个基于 Serverless ...

  2. 腾讯云正式发布遨驰云原生操作系统

    11月3日消息,在腾讯数字生态大会现场,腾讯云首次正式对外公布分布式云战略,同时发布行业首家全域治理的云原生操作系统遨驰Orca. 据悉,此次公布的腾讯云分布式云是腾讯云为多云.混合云场景提供系列产品 ...

  3. 阿里云李响荣获 2020 中国开源杰出贡献人物奖,我们找他聊了聊开源和云原生

    作者 | 禾易 在第十五届"开源中国开源世界"高峰论坛上,阿里云资深技术专家.etcd 创始人.CNCF TOC 李响荣获 2020 中国开源杰出人物贡献奖.恭喜李响! 去年,全球 ...

  4. 我们找阿里云资深技术专家李响聊了聊开源和云原生

    简介:去年,全球顶级开源社区云原生计算基金会CNCF正式宣布其技术监督委员会席位改选结果.阿里云资深技术专家李响入选,成为该委员会有史以来首张中国面孔. 李响是 CoreOS 最早期的工程师之一,参与 ...

  5. 春松客服:通过开源加云原生模式,大规模交付智能客服系统 | Chatopera

    什么是智能客服系统 客服系统可以说,在 20 世纪六十年代,就成为现代企业的基础了,美国贝尔实验室最早研发商用计算机,就是为了实现在呼叫中心自动化的调度电话网络的接线,也就是说,是客服系统的高强度的作 ...

  6. cube开源一站式云原生机器学习平台-架构(二)

    全栈工程师开发手册 (作者:栾鹏) 一站式云原生机器学习平台 前言:cube是开源的云原生机器学习平台,目前包含特征平台,支持在/离线特征:数据源管理,支持结构数据和媒体标注数据管理:在线开发,在线的 ...

  7. 字节跳动开源其云原生数据仓库 ByConity

    动手点关注 干货不迷路 ‍ ‍项目简介 ByConity 是字节跳动开源的云原生数据仓库,它采用计算-存储分离的架构,支持多个关键功能特性,如计算存储分离.弹性扩缩容.租户资源隔离和数据读写的强一致性 ...

  8. cube开源一站式云原生机器学习平台-架构(一)

    全栈工程师开发手册 (作者:栾鹏) 一站式云原生机器学习平台 前言:cube是开源的云原生机器学习平台,目前包含特征平台,支持在/离线特征:数据源管理,支持结构数据和媒体标注数据管理:在线开发,在线的 ...

  9. cube开源一站式云原生机器学习平台

    https://github.com/tencentmusic/cube-studio cube云原生机器学习平台-架构(一) cube云原生机器学习平台-架构(二) cube云原生机器学习平台-架构 ...

  10. cube开源一站式云原生机器学习平台-推理服务的工程化加速

    全栈工程师开发手册 (作者:栾鹏) 一站式云原生机器学习平台 前言:cube是tme开源的云原生机器学习平台,目前包含特征平台,支持在/离线特征:数据源管理,支持结构数据和媒体标注数据管理:在线开发, ...

最新文章

  1. C#表达式,类型和变量
  2. java电话号码输入_使用可选字母前缀屏蔽输入到电话号码格式
  3. android os自动安裝软件,[图]Bliss OS 12进入开发阶段:可在桌面设备上安装Android 10系统...
  4. debian 升级后mysql_教你在Debian和Ubuntu上升级MySQL
  5. Laravel源码学习文章汇总
  6. 数据结构算法实践-Python——序章
  7. Hibernate-逆向工程
  8. 小D课堂 - 新版本微服务springcloud+Docker教程_4-06 Feign核心源码解读和服务调用方式ribbon和Feign选择...
  9. 网络工程师考试第一节计算机硬件基础
  10. 换了路由器电脑都连不上网了_高校连上网自由都实现不了?三大运营商:这锅我不背...
  11. 拖放drag、drog
  12. python学习(2)
  13. 这几本值得你一看再看的程序员素养必备好书
  14. 数学建模国赛经验分享
  15. app毕业设计 基于uni-app框架商城app、图书商城app毕设题目课题选题作品(2)后台管理功能
  16. 自动化办公:2、Python自动化之Excel读取表格+设置样式
  17. 颠覆平庸:在技术上持续精进
  18. WPF实现组态软件-逼真的管道和速度可变流体(五)
  19. 当出现程序包XXX不存在的时候,解决方案
  20. ssm城市旅游景点信息交流平台的设计与实现毕业设计源码290915

热门文章

  1. unbuntu网卡配置
  2. 7-1 jmu-python-汇率兑换
  3. http首部字段详解与cookie
  4. Mac微信小助手(免认证登录、多开、防撤回)---强烈推荐
  5. WeChatTweak-微信小助手 v1.2.2 详细安装教程
  6. freemarker模板动态生成word文档之配置模板路径
  7. 关于 mysql数据库“ERROR 1118 (42000): Row size too large.“ 的解决方法
  8. xss.haozi靶场通关
  9. 链塔年会圆桌论坛实录
  10. WebRTC 系列2--双摄像头同时预览