资源竞价
今天下午跑到人大的咖啡厅看了一篇小论文,挺有意思的,因此在这里记录一下。介绍的论文(也许不是论文,只是个Technological report)题目为:《Using a market economy to provision compute resources across planet-wide clusters》,感兴趣的同学可以自行搜索下载。
文章解决的问题,只要在大公司里待过的人都会有所感悟,那就是在一个大型的、有大量服务的公司,其能够提供的资源总数是无法做到无限量供应的。而且考虑到地域因素,比如中国产煤地电价低、北方比南方制冷成本低、各地基础光纤出口带宽、用户的分布等,资源提供很容易出现地域不均。这种时候就需要把一些不必要运行在紧张资源机房内的任务,迁移到资源不紧张的机房那里。于是问题就来了,谁能做出这个决定?靠业务自己肯定不靠谱,我服务在这里跑得好好的,为啥要折腾自己消耗自身的研发资源; 而系统资源的运营者, 则由于不知道运行的各种业务之间的优先级和资源需求,很难做出改变。
文章的做法非常简单,就是给资源进行定价,即让紧张的资源的售价变高、而清闲的资源价格变低,然后业务线需要”购买”资源,并记入自己的运营成本。这样一来,业务就有很大的动力去review自己的业务,将任务从高价资源挪出,迁去使用低价资源。那么如何定出这个价格呢?其实挺直接的,就是用clock auction的方式来做。这个竞价的基本过程跟拍卖会很像,主持人报一个资源价格(当然,是包括cpu, memory等多维的),然后进行一轮信息收集,每个业务线通报自己愿意以这个价格收购或者出售多少个单位的资源(注意这里业务线也可能出售资源)。主持人根据上报的信息,汇聚计算,根据优化函数确定是否提高报价,如果不提高,竞拍就此结束,这个报价就是当前资源的价格。那么到什么程度可以停止呢,这个其实由优化函数决定,比如,可以选择当业务线”购买”和”出售”资源的总量几乎相等的这个点上(均衡)。
这篇论文的思想其实很好理解,算法也不复杂,值得一看。不过个人以为这篇论文其实还是粗糙了些。在竞价问题上,其实有比较深的数学知识,比如被广告系统广为使用的”二价法”,就有很正规的数学上的证明,确保算法能够收敛到某个均衡点上、且这个均衡点能够最大化广告位出售者的经济效益(这也是为什么使用二价法的谷歌利润率比使用直接竞价的雅虎高很多)。这篇文章没有这方面的数学验证,只是一个工程上的实践方式,有效、但不一定是最好。
这篇论文价值在于背后的思想。即,可以用经济学的手段来解决资源配置上的问题。想想也是,本质上来说,资源调度和集群利用率的提升,是在解决资源的合理配置的问题,也是在寻找”公平”和”效率”的平衡点。这和经济学的基本问题是一致的,因此经济学的一些做法,自然是可以迁移过来予以应用。
想起了很久前看过的曼昆的《经济学原理》,有时间可以再次拜读。