我最近接触到了容量与效率工程的概念,这是一门旨在以最优方式设计和运行系统的学科。它是系统架构的关键支柱,在规模至关重要的领域(例如量子计算系统)尤为重要。 容量与效率工程

简而言之,产能与效率工程是一门优化生产的科学或学科。它通过平衡最大产量(产能)与资源消耗(效率)来实现这一目标。

容量与效率工程(CEE)的优势在于它是一个定义明确的领域,文献资料丰富,并有完善的工程实践体系支撑。本备忘录旨在提炼CEE中的一些关键概念。

产能和效率工程支柱 链接到标题

容量与效率工程建立在三大核心支柱之上:可观测性、建模和规划。


可观测性
→

造型
→

规划

最终目标是制定一个能够通过模型有效模拟的计划。该模型应通过实证观察进行验证。通过模拟增长、识别瓶颈并进行战略性资源分配,该计划可以防止资源过载或利用不足,从而确保系统最佳运行。

容量和效率工程

需要注意的是,系统资源可以是任何事物,包括CPU、内存等IT资源,也可以是人员或设备。事实上,CEE可以应用于各个领域。例如,它可以帮助优化项目管理中的人员配置,或者降低基础设施管理中的云托管成本。

可观测性 容量和效率工程 链接到标题

可观测性是对系统进行实证分析。在计算机系统中,日志经常与可观测性混淆,但它们只是其中的一部分。例如,OpenTelemetry标准涵盖了多种可观测的“信号”:日志、指标、追踪和冗余信息。对于计算机工程和工程(CEE)而言,有效的可观测性应提供:

  • 资源使用情况:观察和跟踪资源消耗情况。观察结果应具体说明资源的使用内容、使用时间、使用者以及是否发生任何错误。

  • 性能指标:跟踪关键性能指标(KPI),例如延迟和吞吐量。包括良率、浪费率或错误率。

  • 瓶颈识别:找出系统中降低吞吐量的制约因素。

关键在于能够对系统进行事后分析,并且无论在高负载、维护还是空闲期间,都必须进行分析。详细了解发生了什么、何时发生以及为什么发生至关重要。如果没有这些可观察的数据,就无法确定系统故障的根本原因。

当然,要收集完整系统的全部观测数据并非易事:观测成本可能非常高昂,甚至可能具有破坏性(例如在量子计算中,测量系统会改变其状态——这种现象被称为观测者效应)。这意味着,仅仅是观测系统这一行为本身就可能改变其行为并降低其性能。解决这个问题的方法是采样(仅收集部分事件的数据,而非全部事件)。其核心思想是将采样率(数据收集频率)作为可调的系统参数,如下图所示(图片来源:OpenTelemetry)。

观测抽样

对于非计算系统而言,有效的可观测性能够解释项目延期的原因。可观测数据很可能是 ISO9001 标准规定的技术和非技术文档,这些文档解释了项目每个阶段所做的可追踪决策。

建模 容量和效率工程 链接到标题

在可观测性建立之后,就可以开始理解系统的分析参数行为。这种行为构成了下一个支柱的基础:它可以被描述并转化为参数模型。下一步是明确在给定一组参数或条件的情况下,这样的模型需要提供什么:

  • 性能:系统能够提供的最大吞吐量和延迟是多少?

  • 运行成本:以分配的资源数量来衡量,运行该系统需要多少成本?该成本可能因一天中的不同时间而异。

  • 重新配置:更新系统参数会产生哪些瞬态影响(暂时性影响)?例如,分配新服务器或 QPU 并对其进行正确配置时。

关键在于模拟系统行为并观察其在不同运行条件下的性能。由于该模型包含了资源成本,因此可以展现这些条件下的成本权衡。这些信息对于规划阶段至关重要。

这里值得一提的是_仿真_和_模拟_之间的区别。从宏观层面来说,模拟创建了一个系统的模拟版本,而仿真则基于系统的抽象模型进行操作。使用模拟,由于输入相同,因此可以将模拟性能与实际性能进行比较。我认为在CEE的语境下,模型主要指的是模拟器。

仿真 vs 模拟

一个好的非计算系统模型可以预测向项目中添加更多资源的影响。事实上,有时添加资源反而会降低系统性能。这种违反直觉的结果被称为布鲁克斯定律。

规划 容量和效率工程 链接到标题

有了模型,就可以开始规划系统运行了。利用模型模拟各种情况,找出最优方案。根据这些结果,策略性地分配资源以满足需求。一个好的计划应该包含需求预测、成本管理和故障保护措施。预测用于预测未来的使用情况、流量或需求。成本控制用于控制资源过度配置,同时确保高峰时段的容量。故障保护措施则提供缓冲,以应对意外需求。

关键在于高效可靠地运行系统,应对峰值负载而不发生故障,确保成本效益,通过预测容量实现主动重新配置,并提供足够的缓冲来应对意外事件。

该计划结合了最佳情况(需求符合预期)和最差情况(需求高于或低于预期)。这种方法实现了产能的成本效益最优配置。

微调模型 链接到标题

先有鸡还是先有蛋的问题

构建一个好的模型是一个先有鸡还是先有蛋的问题。除非你知道在系统中应该观察什么以及如何观察,否则很难构建一个高效且准确的模型。而没有准确的模型,计划就不太可能产生好的结果。

当模拟计划与实际行为出现差异时,你需要找出缺失的参数。这通常是通过事后分析被观测系统的日志来实现的。目标是识别需要观察的新参数。

容量和效率工程

上图中,这种学习循环被表示为_知识微调_。

工程平台

如果没有一个自动化平台来支持其整个工作流程,CEE本身将无法独立运作。下图展示了这个工程平台。

容量和效率工程

该工程平台的理念不仅在于自动化系统扩展和缩减的过程(该过程可委托给 AI 运维代理),还在于持续验证模拟模型与经验观察结果的匹配度,并将差异反馈给机器学习代理以进行模型微调。该代理很可能是一个基于强化学习的代理,如果用于实时应用,则需要对其进行治理。

未能快速扩大规模的代价,又称延迟的代价。 链接到标题

为了确保系统的稳定性和可靠性,性能应该限制在稳定的水平,而不是最大值。一般来说,稳定的性能约为最大性能的三分之二。超过这个阈值,系统性能就会下降。此时,停机成本会迅速(通常是指数级地)超过过度配置的成本。 延迟成本

右图中,延迟成本可以理解为在系统(实时)扩展时无法满足需求所造成的经济损失。这是一种暂时性成本。当利用率较低时,延迟只会影响少数需求。但当利用率较高时,延迟会影响大量需求,延迟成本也会呈指数级增长。

最佳利用率是指能够同时最小化延迟成本和故障成本(过度配置)的资源利用率。绿色曲线表示总成本,即这两个因素之和。这条曲线的局部最小值,通常在最大性能的 2/3 左右,标志着最佳利用率。关于最佳利用率,实际上还有很多值得探讨的地方,我相信有些人会认为最佳利用率应该在 80% 左右。关键在于认识到,通过优化系统来降低延迟成本,可以提高最佳利用率(图片来源:show me the data)。

系统优化 链接到标题

改进的成本

如果降低系统故障成本意味着最大限度地缩短扩展时间,那么试想一下,如果一个系统能够在几毫秒甚至几微秒内进行自我调整,以扩展规模并满足需求,那该有多好。当然,开发这样的系统成本可能非常高昂(想想高频交易)。但是,如果开发这样一个系统的成本低于系统更高利用率带来的收益呢?

这一挑战也是CEE(核心经济环境)的一部分。通过对系统改进成本进行建模,可以制定一个平衡改进成本与收益的计划。这与其说是一项运营挑战,不如说是一项战略投资。然而,它仍然遵循CEE的相同原则,并将这些原则应用于企业的运营战略,将其视为一个系统。

价值流图 链接到标题

在产能和效率工程的背景下,价值流图(VSM)通常被用作诊断工具,以确定产能消耗在哪里,从而识别浪费和瓶颈的根本原因。

价值流是指系统交付服务过程中工作流程中的每一个步骤或活动,而价值流图则是对这一端到端流程的可视化呈现。价值流图区分三种类型的活动:

无駄
穆达
  • 增值(VA):直接有助于客户获得所需输出的步骤(例如实际计算)。

  • 非增值但必要的步骤(NNVA):系统所需的步骤,但没有直接的客户价值(例如握手)。

  • 浪费(Muda,或無駄,日语术语意为“浪费”):消耗产能而不增加任何价值的步骤。

目标是消除浪费步骤,而价值流图 (VSM) 正好擅长识别这些步骤。VSM 的强大之处在于它能够找到可以减少在制品 (WIP) 的正确优化方案。这一点至关重要,因为利特尔定律指出,平均交付周期(或周期时间)等于平均在制品 (WIP) 除以平均吞吐量:

交付周期 = 在制品 / 吞吐量

这意味着,即使吞吐量保持不变,如果在制品数量翻倍,交货周期也会翻倍。因此,控制在制品数量是改善交付延迟(即“延迟”)从而提高系统效率的最直接手段之一。

# 结论

瞧,这份周日早晨关于容量和效率工程 (CEE) 的简短备忘录帮助我更好地理解了这个主题。现在,我想记住的是,当一个系统的效率非常低时,很可能表明该系统或其工作流程充斥着大量的浪费 (Muda)。应对这一挑战的答案是:与其过度配置资源,不如投资降低延迟成本?


References:

DrawIO diagrams used in this memo:


.drawio .webp .svg
capacity and efficiency engineering pillars

.drawio .webp .svg
simulation vs emulation

.drawio .webp .svg
obervation sampling

.drawio .webp .svg
capacity and efficiency engineering

.drawio .webp .svg
optimial utilization

Curious about the relative perspective of various AI agents on CCE? Here is the summary:

DimensionGeminiChatGPTClaudeCopilot
Primary lensPeople & teamsSystems & infra.Industry & operationsReliability & scale
Key
methods
VSM, WIP limits, Agile, CI/CDLoad testing, stress testing, metricsLean, Six Sigma, continuous improvementStress testing, bottleneck analysis
Unique
angle
Burnout & work-life balance as a metricOver/under provi-sioning as core riskTraditional industry methods (no tech slant)“Prevent bottlenecks before they happen”
Metrics
emphasis
Cycle time, deployment frequencyThroughput, latency, cost per requestUtilization rates, cycle timesWorkload forecasts, scaling thresholds