Docker的秘密:费电!

不过,用Docker容器来处理耗电量更大的冗长任务很划算。

Docker也许是开发运维(DevOps)界的宠儿,不过说到能耗或耗电方面,这多少未免有点夸大其辞了。

隶属加拿大阿尔伯塔大学的计算机科学研究人员近期花了一段时间,特意比较了在Docker容器中运行应用软件的耗电量和在裸机Linux服务器上运行同一应用软件的耗电量。

在一篇题为《Docker如何影响耗电量?评估使用/不用Docker容器的工作负载》的学术论文(https://arxiv.org/pdf/1705.01176.pdf)中,艾布拉姆·欣德尔(Abram Hindle)教授和三位研究同事埃迪·安东尼奥·桑托斯(Eddie Antonio Santos)、卡尔森·麦克莱恩(Carson McLean)和克里斯托弗·索利纳斯(Christopher Solinas)撰文表示,虽然Docker具有使用方便的优点,但这是有代价的。

这篇论文声称:“这番研究工作表明,容器化技术在耗电量方面没有所谓的免费午餐。容器化技术意味着耗电量与可管理性方面需要作一番取舍;至于在特定的使用场景下,更偏重哪个方面,那就取决于负责具体部署的个人或团队了。”

欣德尔在接受英国IT网站The Register的电话采访时解释,如果是I/O密集型任务,在Docker容器中运行的应用软件其耗电量超过同样那些应用软件在裸机系统上运行的耗电量,原因是它们要花费更长的时间。虽然大家承认这是个明显的问题,但可以量化这个问题总归是件好事。

能耗是指以瓦特为单位的功率乘以完成任务所需要的时间。

欣德尔说:“我们在使用Docker时发现,它要耗费更多的电量来处理同样的任务,因为它在I/O方面效率要低一点。基本上来说,使用抽象机制,效率难免要受到影响。”

Docker本身效率要低一点,原因是dockerd进程即便处于闲置状态也耗电,这归因于Docker的一些Go进程,比如废料收集进程。

该论文解释:“单单在闲置状态下运行dockerd就会使平均功率相差2瓦特,因而时间一长,就会增加耗电量。然而,耗电量的增加可能主要还是归因于运行时的性能。”

如果是CPU密集型任务,比如内存中Redis处理,欣德尔表示,这种耗电量的差异可忽略不计。真正重要的是频繁访问文件、磁盘或网络的情况下,尤其是在大规模环境下,比如说处理PostgreSQL数据库时。

据欣德尔声称,就PostgreSQL而言,使用容器化技术和启动TLS/SSL之间在耗电量方面的影响大致相当。

欣德尔强调,Docker容器确实具有诸多优点,这些优点可能对许多企业组织来说比裸机服务器的效率来得更重要。他说:“如果你的支出主要是人力这一块,那么可能还是值得为Docker多掏一点电费。”

K8S中文社区微信公众号
分享到:更多 ()

评论 抢沙发

评论前必须登录!