2月11号,读过一篇关于云资源管理的论文:Flexible Use of Cloud Resources through Profit Maximization and Price Discirmination(ICDE 2011).简单做点笔记:
本文提出了一种基于边际成本(Marginal Cost)和边际收益(Marginal Revenue)的虚拟机分配策略。每个用户设置预算函数,该预算函数说明对应其任务的不同响应时间(执行时间)的用户同意的每小时支付金额。任务的响应时间和分配给该用户的虚拟机的个数有关,增加虚拟机个数会减少响应时间,提高用户的支付金额,增加云服务提供商的收益。但是,任务的响应时间和虚拟机的数量并不是线性关系,当虚拟机数量比较多时,新增加的虚拟机不会带来很大的收益。而每个虚拟机都有一定的成本。把任务响应时间与虚拟机数量的关系和每个新增加虚拟机的成本相结合,就可以决定在Iaas云中如何合理的分配给用户虚拟机以最大化云服务提供商的利益。具体如下:
以虚拟机数量为横坐标。随着虚拟机数量的增加,性能提升越来越小,亦即响应时间缩短幅度越来越小,所以收益是一个斜率不断降低的曲线,相应的边际收益(MR)是一个不断下降的曲线。另外,我们简化系统开销模型,假设每个虚拟机的成本是固定的,所以成本是一个过原点的直线,边际成本(MC)是一个水平直线。边际收益和边际成本的交点对应的横坐标的值就是使得云服务提供商收益最大的虚拟机个数。
以上是单用户环境下最大化云服务提供商利益的方法。在多用户环境下,隶属于多个用户的虚拟机竞争物理机器上的资源,所以单个虚拟机的性能会下降,相同数目的虚拟机的性能较之前也会有所降低,故而收益曲线会较之以前更低,更平滑。边际收益曲线也会更低。而边际成本曲线不变,故而两者的交点会改变(左移)。
另外,当多个用户同时提交作业时,我们要综合考虑所有用户的总输入而不是只考虑某个用户。这样即使某几个用户的收益不是很大,总得收益是最大化的。本文提出的多任务虚拟机分配算法根据的是每个用户可以支付的最大金额。亦即,每个用户分配到的虚拟机数量正比于其可以支付的最大金额。