文/中国银行软件中心 张乐 廖至峰 陈熙 李庆书
信息技术迅猛发展,业务系统频频上线,给IT基础资源的管理带来了新的挑战。业务场景复杂多样,访问量实时变化,如何合理规划IT资源,充分发挥资源性能,是当前面临的难题。容量评估的核心是找到业务访问量与IT系统资源消耗的关系,建立科学的方法论做好资源规划。中国银行软件中心积极探索该技术领域,在总结已有经典方法论的基础上,研究了一种以线性回归理论为核心的资源预测方法,并以此为基础建立了一套容量评估模型。该模型搭建起了业务指标和IT资源的桥梁,能为IT资源的评估提供科学指导。
经典资源预测方法论及研究现状
对本文后续涉及的相关技术指标/术语做如下说明。
(1)QPS(Queries Per Second),每秒查询次数。
(2)TPS(Transactions Per Second),每秒事物处理次数。具体事务定义比较自由灵活,它可以包含多个请求。
(3)RT(Response Time),响应时间(单位:秒)。
(4)并发量CC(Concurrency),同一时间处理的请求/事物数量。并发量和QPS是有关系的,CC=QPS×RT。
研究IT系统资源预测的意义在于,找到一种方法为预测过程建立一套可靠的数学模型,该模型可定量预测任意业务指标(如QPS)输入下的操作系统资源消耗量,这可为进一步的系统部署架构/数量规划提供依据。关于资源消耗如何预测的问题,已有众多经典理论可供参考,下面对经典预测理论做简要总结。
(1)资源极限法是Gregg.B在《System Performance:Enterprise and the Cloud》文中提到的一种资源评估方法,该方法用来研究触发系统性能瓶颈的资源使用率和工作负载的联系,步骤如下:测量服务器请求的频率,监视请求频率随时间的变化;测量硬件和软件的使用,监视使用率随时间的变化;用资源的使用来表示服务器的请求情况;根据每个资源来推断请求的极限。
X系统当前每秒可执行1000个请求(QPS=1000),最繁忙的资源是16个CPU,当前平均使用率为40%,预测当CPU处于100%满负荷时达到工作负载的资源瓶颈。为了提前预防QPS过高导致CPU资源耗尽的情况,需要根据当前已有数据推算X系统所能承受的极限QPS,利用上面的分析步骤来拆解该问题。
单个请求耗费CPU资源:(16×40%)/1000=0.0064
每秒请求最大值为:(16×100%)/0.0064=2500
或者,我们假定16个CPU满负荷时,极限QPS值:
综上,CPU满负荷100%使用时,X系统能承受的QPS极限为2500。
(2)TCA交易成本理论(Transaction Cost Analysis)是Vladimir Markov在《Bayesian Trading Cost Analysis and Ranking of Broker Algorithms》文中提到的一种基于交易成本分析的理论,值得一提的是,该理论最初是服务于证券交易的,后来由大型IT企业将该思路用于IT系统资源成本计算,为预测系统性能提供了可能性。
任何业务在IT系统上运行都需要消耗硬件资源,将完成某个特定业务消耗的资源定义为该业务的单位交易成本。对于相同交易或交易集合,交易成本应是不变的。即使业务运行在不同的环境中,交易成本也应该是基本恒定,通过这个恒定关系,可利用资源消耗推算不同环境的性能容量转化关系。
假设X业务在性能测试环境中的TPS为T1,CPU数量为N1,CPU频率为F1,CPU使用率为R1,每笔交易的单位成本为COST,即:
X业务在生产环境中CPU数量为N2,CPU频率为F2,CPU使用率为R2,根据交易成本理论,推算X业务在生产环境中的TPS值T2可以建立如下关系:
经测试发现,X业务在性能测试环境CPU使用率为60%状态下,TPS可达100,性能环境CPU数量为16核,频率为3GHZ,则该系统每笔交易CPU单位成本COST为:(16×3×0.6)/100=0.288。假定生产环境CPU数量为32核,频率3.5GHZ,CPU使用率不超过70%的前提下,生产环境业务处理能力理论上不超过(32×3.5×0.7)/0.288=272TPS。
上述经典方法论在资源预测的过程中有很重要的参考意义,但实际使用中存在各种缺陷。资源极限法只能用来估算极值,无法覆盖一个完整的预测范围。TCA预测模型以单笔业务成本为核心建立了一套基于成本不变的假设,并且能跨越环境做预测,但无法处理随着交易量上升交易成本变化的问题。
本文将在下文重点介绍一种能以性能样本数据为基础、以线性回归为核心的方法论,并采用该方法论建立一套能够评估业务访问量与资源消耗的数学模型。该模型以业务访问为输入,能更加准确预测资源使用率。
线性回归方法
线性回归LR(Linear Regression)是利用统计学中的回归分析理论,来确定两种以上变量之间相互依赖的定量分析,运用很广泛。在回归分析中,如果只包含一个自变量和一个因变量,且二者的关系可以用一条直线近似表示,就称为一元线性回归分析。如果回归分析包含两个或两个以上的自变量,就称为多元回归分析。
以服务器CPU使用率和QPS值为例(实际上系统资源还有很多,这里仅以CPU使用率为例说明问题,其余资源与业务量的变化关系均同理),采用一元回归,经过性能基线测试得到如下数据集:D={(x1,y1),(x2,y2),...,(xn,yn)},x表示QPS,y表示CPU使用率,D为经过n次采样得到的数据样本,在坐标系中将样本值进行描点如图1。
如何根据性能基线测试的离散样本数据D,预测任意QPS下CPU的使用率。如果能在图1中找到一条直线,使该直线能尽可能接近已有数据样本D,问题便能迎刃而解。寻找拟合直线的计算过程,就是回归分析。如图1所示,这样的直线存在无数条,以图中已有的两条直线为例,数据样本大致都能分布在绿色直线附近,所以绿色直线更符合预期。假定绿色直线方程为f(x)=wx+b,则称该直线为回归直线,该方程为回归方程,利用回归方程求得f数值,即为第i个样本的预测值。
在压力测试环节,操作系统资源使用率与QPS相关,同时还与并发量CC相关,因此本文将采用二元线性回归的方法来分析问题。下面介绍多元线性回归的理论。
假定自变量为x,它有n个维度,x=(x1,x2,...xn)在m次采样后得到结果y,可表示如下:
与一元回归模型同理,建立多元回归模型:
如果有m组样本,m个预测值必然满足下式:
可用矩阵表示为:
对以上参数的说明如下:
fi为第i组数据的预测值。
xi为第i组样本值自变量矩阵(叠加常数1)。
w为回归模型系数矩阵,wT为其转置xi=[xi1 xi2... xin 1]。
x为自变量样本值矩阵。
y为因变量样本值矩阵。
依据最小二乘法、矩阵求导公式,最终解得:
至此,多元线性回归模型确定。对上式中矩阵的意义进行如下说明:
X为m组样本数据的自变量矩阵,并且第n+1列为常数1(叠加截距项)。
Y为m组样本数据的因变量矩阵。
w为线性回归方程的回归系数矩阵。
资源预测和容量评估方法
服务器容量评估的核心在于如何根据已有的业务指标需求,确定合理的服务器的配置/数量,最终使得该架构以持续稳定运行业务为目标,评判IT资源是否合理的标准在于服务器系统资源使用率是否在正常的范围内。例如:检测到某业务在峰值QPS压力下,操作系统各项资源指标均未超出限制,则认为该架构是合理的。
基于线性回归的容量评估方法,核心要素总结为如下:将固定角色服务器集群N台拆分成单台做评估,业务流量采取平均拆分原则;对单台服务器进行资源评估,逐项全部评估,满足“木桶理论”约束;具体某一项资源评估过程使用线性回归预测方法;回归预测过程采用迭代预测的方式,直至满足资源使用的阈值/条件才终止迭代。
本文处理线性回归过程中,指定业务指标为两个维度(QPS和并发量CC),操作系统资源指标七项(CPU使用率、CPU负载、内存使用率、SWAP使用率、连接数、句柄数、线程打开数),所以最终七项系统资源的预测过程均使用二元线性回归方程,回归方程由压力测试样本数据采用二元线性回归得来。以某WEB服务器为例,该处理过程的原理如图2所示。上述评估流程伪代码如图3所示。
在压力测试环节,实测某WEB服务器(nginx/x86/1c2g)在QPS、CC的二维组合与各项系统资源使用率的样本数据采集结果,见表1。
表1 某WEB服务器性能测试样本结果
将qps和cc作为输入项本生成X矩阵(20×3),注意叠加常数截距项,样本数量m=20组。7种系统资源分别建立Y矩阵(20×1),最终通过线性回归计算出回归系数矩阵w如下:
通过公式计算,可得出7种系统资源用量的预测函数如下:
至此,系统资源使用量预测函数完成,f1~f7分别代表了7种资源。
注:QPS数值一般远大于系统资源使用量,为了避免预测计算引入过多浮点小数位及计算精度的需要,公式中的数值是把实际w系数矩阵的每一项都放大了10000倍,这样后续采用预测函数计算出系统资源使用量之后再缩小至万分之一,即可得出资源真实用量。
容量评估结果
结果展示以前面论述用到的某WEB服务器(类型NGINX,架构X86,配置1C2G)为例,采用不同的4个业务量(QPS),输入模型,采用线性回归计算系数w并通过预测迭代,得到预测结果见表2。该表预测了在不同业务压力下,确保业务平稳运行所需的WEB服务器数量,以及每台服务器操作系统资源使用量的具体数值。采用线性回归方法计算cpu使用率和load负载值与样本值对比,见图4。
表2 采用线性回归计算得到预测结果
总结与展望
本文基于线性回归建立了一套资源预测及系统容量评估方法,经实测,在资源预测方面取得了良好效果。但在业务复杂多样、接口逻辑复杂度参差不齐、服务器/中间件种类繁多的背景下,若要实现对大多数业务场景服务器资源用量的合理预测并完成容量评估,需要海量数据样本支撑。因此,更加丰富完善的压力测试数据样本采集将是后续的工作方向。同时,如何根据本文已经提到的WEB服务器容量评估方法,在全链路经典业务传输架构下继续进行整体架构的容量评估也是接下来研究的重点。
技术创新没有尽头,探索新兴技术的脚步永不停歇。中国银行软件中心运用新技术,有效提升了系统运维水平和运维效率,希望此项研究应用能够带给同行一些启发和思考。
(此文刊发于《金融电子化》2025年6月上半月刊)
热门跟贴