大叔自由人

软考 / 架构师 / 第5章

系统性能评价

章节概述

系统性能是硬件与软件性能指标的综合体。本章从性能指标、性能计算、性能设计和性能评估四个方面展开,涵盖计算机/网络/操作系统/数据库/Web 服务器的性能指标、MIPS 与峰值计算方法、阿姆达尔定律、负载均衡技术,以及基准测试程序体系(SPEC/TPC/Linpack 等)。

知识结构框架

  • 5.1 性能指标
    • 5.1.1 计算机(主频、缓存、运算速度、RASIS 等)
    • 5.1.2 网络(设备级/网络级/应用级/用户级)
    • 5.1.3 操作系统(吞吐量、响应时间、资源利用率)
    • 5.1.4 数据库管理系统
    • 5.1.5 Web 服务器
  • 5.2 性能计算(MIPS、峰值计算、等效指令速度/Gibson 法)
  • 5.3 性能设计
    • 5.3.1 阿姆达尔解决方案
    • 5.3.2 负载均衡(DNS/反向代理/NAT/第四层交换)
  • 5.4 性能评估
    • 5.4.1 基准测试程序(Dhrystone/Linpack/Whetstone/SPEC/TPC)
    • 5.4.2 Web 服务器性能评估
    • 5.4.3 系统监视

核心概念定义

计算机主要性能指标

  • 时钟频率(主频):CPU 工作节拍频率,主频越高运算速度越快
  • 运算速度:MIPS(百万条指令/秒,定点);MFLOPS(百万次浮点运算/秒)
  • 运算精度:基本字长,位数越多精度越高
  • 内存容量:影响与磁盘交换次数
  • 存取周期:连续两次读/写所需最短时间(几~几十 ns)
  • 响应时间:0.1s 无延迟、1.0s 可接受极限、10s 注意力极限
  • RASIS 特性:可靠性(R)、可用性(A)、可维护性(S)、完整性(I)、安全性(S)

可靠性关键指标

  • MTTF(平均无故障时间)/ MTBF(平均故障间隔时间):衡量可靠性
  • MTTR(平均故障修复时间):衡量可维护性
  • TAT(平均故障响应时间):从故障到确认修复的时间

阿姆达尔定律

系统中对某部件采用更快执行方式所获得的性能改变程度,取决于该方式被使用的频率(占总执行时间的比例)。加速比取决于两个因素:

  • 增强比例(f):可改进部分在总执行时间中的占比(≤1)
  • 增强加速比(r):改进部分单独的执行速度提升倍数

负载均衡技术类型

类型原理优缺点
基于特定服务器软件HTTP Location 重定向简单,易形成死循环
基于 DNS同一名字映射多 IP,随机解析简单,无法感知服务器差异
反向代理代理转发请求到内部服务器安全+缓存,代理可能成瓶颈
基于 NAT地址转换到内部服务器第四层交换,硬件性能优秀
扩展负载均衡半中心方式,回应直接返客户减轻中心负担,适合大规模

基准测试程序

程序类型说明
Dhrystone整数C 语言,100 语句;1 VAX MIPS = 1757 Dhrystones/s
Linpack浮点FORTRAN,高斯消元法;MFLOPS/GFLOPS/TFLOPS
Whetstone综合浮点+整数+超越函数;Kwips
SPEC综合系统性能评估联盟,SPECint/SPECfp
TPC事务处理TPC-C(OLTP)、TPC-H(决策支持)、TPC-W(电商)
HPL并行TOP500 排名依据,2/3·N³-2N² 浮点运算

关键公式与模型

MIPS 计算方法
MIPS = IPC × Fz
IPC = 每个时钟周期平均执行指令条数;Fz = 处理机工作主频(MHz)
例:P4/2.4E,IPC=2,Fz=2400MHz → MIPS = 2×2400 = 4800 MIPS
理论浮点峰值
理论浮点峰值 = CPU 主频 × 每时钟周期浮点运算次数 × CPU 数
由浮点运算单元个数及每周期处理指令条数决定
阿姆达尔加速比公式
S = 1 / [(1 - f) + f / r]
f = 增强比例(可改进部分占比),r = 增强加速比(改进部分速度提升倍数)
含义:即使 f=1(全部可改进),加速比上限为 r;r→∞ 时 S→1/(1-f)
等效指令速度法(Gibson 法)
等效 CPI = Σ(CPIᵢ × Wᵢ)
典型权重:加减法 50%、乘法 15%、除法 5%、程序控制 15%、其他 15%
PDR(数据处理速率)
PDR = L / R
L = 0.85G + 0.15H + 0.4J + 0.15K
R = 0.85M + 0.09N + 0.06P
G=定点指令位数, H=浮点指令位数, J=定点操作数位数, K=浮点操作数位数, M=平均定点加法时间, N=平均浮点加法时间, P=平均浮点乘法时间
HPL 浮点运算次数
浮点运算次数 = 2/3 × N³ - 2N²
N = 问题规模(矩阵大小);峰值 = 计算量 / 计算时间 T