赞
踩
2016年维尔茨堡大学的Jóakim von Kistowski、HP公司的Klaus-Dieter Lange等六位科学家进行了一项关于各种负载下CPU使用率与服务器功耗之间的关系的研究,发表了论文Variations in CPU Power Consumption(DOI: 10.1145/2851553.2851567)。他们采用LINPACK、LU、SOR、SHA256等多种负载对服务器的功耗与CPU使用率进行了全面的分析,获得了大量十分值得我们关注的数据。
从论文中的数据看,这几种负载下的CPU使用率与功耗之间关系的拟合曲线存在一定的不同,不过从总体上看还是线性的,不存在某个拐点后功耗突然变高的情况。从这一点我们可以放心的提高CPU的使用率了,CPU使用率提高并不会存在功耗浪费的问题。上述数据的实验环境是一台富士通的X86服务器,CPU是Xeon E5-2680 v3 。
该图显示了每个工作负载的功耗(瓦特)负载水平范围。与其他工作负载相比,Idle和LINPACK各自仅具有一个负载级别。空闲功率是最小的消耗者,而LINPACK是,最大的消费者,其次是LU满负荷。工作负荷在整个负荷水平上几乎呈线性比例。另外一个对我们十分有价值的数据是关于CPU TURBO的分析: 从CV分析上看,启动turbo模式后IDLE时的的CV高达33.17%,而在节能模式下,只有0.84%。追求高性能带来的服务器空转功耗的巨大提高。在早些年我们为了追求性能,大部分企业都在服务器上架时关闭节能模式,这会导致数据中心能耗的巨大浪费。关于CPU使用率的最佳范围,由于和企业的应用系统关系很大,并且缺乏足够的专业分析,因此只能做一些初步的估算。互联网企业的日均20-40%的成果也可以作为一个重要的参考因素。前几天老白有一篇涉及到LINUX的CPU使用率与CPU资源的使用率之间差异的文章,其中有一个观点是,单纯从CPU使用率上看,在X86+LINUX的环境下,和CPU实际的资源占用比例之间大约有2/3的偏差。当CPU使用率达到60%的时候,服务器的CPU处理能力已经接近满负荷了,长时间超过这个指标,则CPU硬件资源会长期处于不足的状态,对于一些CPU时间敏感的应用,会明显感受到响应时间变长。不过对于大多数系统,包括数据库服务来说,前端的感受相对不是很明显,因为在IO、锁、并发控制方面的等待时间可能会更长。因此来说,纯粹从资源的情况来看,将CPU使用率定在40以上甚至50以上,对于数据库资源池来说完全是没问题的。从多年的运维经验来看,随着负载的增加,运维的难度也会有所增加。不过整体运维难度不仅仅与CPU相关,而是和整体的内存使用情况,IO负载等的组合体相关。针对不同的运维对象,我们构建了反映出其负载的负载模型,该模型与一系列运维对象的运行指标有关。在负载模型中,我们的设计是,当负载指数超过80(满分100)后,运维对象的故障率就会变大,运维难度也随之增加。我们构建的服务器综合资源使用率是基于CPU/内存/IO等方面的系统资源的,负载模型是基于运维对象的关键指标的,这两个完全不同的指标体系中因为运行于共同的硬件资源,因此其间是存在一定的关联的。通过大量的生产数据的分析我们发现,当服务器的综合资源使用率不超过60%的情况下,系统负载指标大概在60-70之间。因此我们考虑在数据库资源池建设的初期,服务器综合资源使用率确定在40-50%存在的风险较小,同时资源使用率又较高。随着资源池运维管理水平的提高,再进一步提升这个指标的下限是比较科学的。针对企业数据库资源池而言,另外一个影响因素是数据库优化。以往数据库优化是从提高系统稳定性,改善用户使用的角度出发的。而从瘦身健体的角度来看,优化可以降低数据库服务器的综合资源使用率,降低服务器的能耗开销。因此在数据库资源池建设过程中,开展常态化优化工作是十分必要的。这个工作使IT健康管理与瘦身健体两项工作紧密的结合在一起了。通过IT健康管理,一方面采用自动化智能化的手段协助开展常态化优化工作(在2019年的IT健康管理试点工作中,曾经尝试了一名DBA同时对40多套数据库系统开展常态化优化工作,在一个月内完成了近200个消缺工作),另外一方面,IT健康管理的深度数据分析工作又可以为数据库资源池的健康运行提供大量的定量分析数据(比如负载评估、性能评估)。本来想写个短文,没想到零零碎碎写了这么多。好像这个问题还没有谈透,确实这是一个大课题,值得多花点时间来研究。关于这方面的一些深入分析,留待以后慢慢写吧。Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。