前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >放大器

放大器

原创
作者头像
1551284907
发布2019-10-08 17:34:22
7690
发布2019-10-08 17:34:22
举报
文章被收录于专栏:

一、前言

腾讯运营着海量的服务器,且近年的增长有加速的趋势,成本问题日益严峻。其中,CPU利用率不高一直是影响整机效率的短板。试想一下,如果能让整机的CPU利用率翻一翻,是什么概念?这相当于把一台机器当两台使用,能为公司节省巨额的成本开销。因此,各BG各业务都在想办法提升整机CPU利用率。大家尝试让各种业务混部,试图达到提高整机CPU利用率的目的。然而,方案的实际效果却不尽如人意。现有的混部方案始终无法做到离线业务不影响在线,这种影响直接导致多数业务没有办法混部。

基于现状以及业务的需求,TLinux团队提出了一套全新的混部方案,该方案已在公司很多业务中得到了广泛的验证,在不影响在线业务的前提下,对整机CPU利用率提升效果非常明显,在有的业务场景下,整机CPU利用率甚至能提升至90%。

本文将围绕如何提升整机CPU利用率这个问题来展开,重点关注以下三个问题:

  • 现有混部方案如何做?问题是什么?为什么现在CPU利用率还是不高?
  • TLinux团队的方案是如何做的?为什么要这么做?
  • TLinux团队的混部方案,真实业务使用效果如何?

二、现有方案

公司内部已有的混部方案总结来讲主要有两种:

  • Cpuset方案
  • Cgroup方案

1.cpuset方案

既然担心离线在线在相同的CPU上互相影响,那么把在线&离线业务直接隔离开是最容易想到的方案,这就是cpuset方案,具体做法如下图所示:

cpuset方案

在线业务限定在某些核上,离线业务限定在某些核上面。这种做法,在某些场景下,是有效果的,因为从物理上将离在线隔离开了,他们之间互不影响(超线程,cache互相影响这里不展开细说)。但是这种方案实用性不强,比如在多线程的业务场景,需要利用多核优势,如果将在线限定到少数几个核就会影响性能。并且,这种方案并没有真正的达到混部的效果,在在线的那些核上,还是没有办法混部离线业务。

2.cgroup方案

Cgroup方案,就是利用cgroup提供的share以及period/quota功能来实现。Share是通过给不同的cgruop配置权重来达到控制不同cgroup CPU占用时间的目的。period/quota是可以控制单位时间内某个cgroup占用CPU的时间。大家想通过这两种功能,来控制离线调度组的占用CPU时间。这种方案在那种对时延不敏感的业务上,有一定效果。但是,不论是share还是period/quota,都没有办法解决一个问题,就是在线无法及时抢占离线的问题。从而在延迟敏感的业务场景,使用group方案会导致在线受影响,业务无法混部。

cgroup方案

同时,cgroup方案还有一些他自身方案带来的问题,比如说period/quota控制需要遍历整个cgroup树影响性能问题,quota太小导致整机死锁问题。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、现有方案
    • 1.cpuset方案
      • 2.cgroup方案
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档