
阿姆达尔定律在加核心数之前先算出并行加速上限【免费下载链接】hacker-laws Laws, Theories, Principles and Patterns for developers and technologists.项目地址: https://gitcode.com/GitHub_Trending/ha/hacker-laws你把实例从 8 核升到 32 核API 的 P99 延迟只从 400ms 降到 330ms账单涨了 4 倍收益 17%。hacker-laws 仓库里的 阿姆达尔定律 一节就是用来回答这类问题核数到底加到多少才值得。本质加速上限由串行部分决定想象一家面馆。后厨有 4 个灶可并行部分和 1 台出单机串行部分。灶开得再多队伍永远堆在出单机前面——单台串行设备的速度就是整店的上限。最小手算一顿饭 100 分钟80 分钟是灶上工作可并行20 分钟是出单串行4 个灶80/4 20 40 分钟加速 2.5 倍8 个灶80/8 20 30 分钟加速 3.3 倍灶数趋近无穷快不过 20 分钟5 倍封顶通用公式$$S(n) \frac{1}{(1-P) \frac{P}{n}}$$$P$ 是可并行化比例$n$ 是处理单元数$S(n)$ 是加速比上限恒为 $1/(1-P)$。P50% 最多 2 倍P95% 最多 20 倍。图可并行化比例越高加速曲线越晚趋平仓库内 images/amdahls_law.pngPS(2)S(8)S(64)上限 1/(1-P)50%1.33x1.78x1.97x2x90%1.82x4.71x8.77x10x95%1.90x5.93x15.42x20x99%1.98x7.48x39.26x100x表中每个数字都是直接代入公式所得如 P95%、n641/(0.05 0.95/64) ≈ 15.42。上限在你写代码之前就已经定好了。边界什么时候公式会失真公式有三个前提工作负载固定、各处理单元同质、单元间通信与锁开销可忽略。任何一条被打破实测曲线就会沉到公式下方。两种典型失真n 越大失真越严重分布式锁、网络往返等通信开销随 n 增长公式假设并行部分线性加速现实做不到问题规模跟着资源走此时改用古斯塔夫森定律——固定时间预算、扩大输入规模可并行比例反而能继续提升。阿姆达尔管固定负载古斯塔夫森管扩展负载两者分工互补。先核对前提再相信公式。三个反直觉误判直觉核数翻 4 倍 ≈ 提速 4 倍——串行部分的时间一分不减上限锁死在 1/(1-P)先 profiling 测出 P再代入公式定预期。直觉并行度 90% 就不值得优化——上限是 10 倍100 核也才 9.17 倍离起点仍有近 9 倍空间拿 S(n) 与上限的差距判断值不值得。直觉公式说 5 倍线上就该 5 倍——通信和锁竞争会让实测低于公式把公式当理论天花板压测时给开销留 20% 缓冲。三条误判同根同源没先测 P。决策速查情境判断动作准备把核数翻倍但没测过 P上限未知无法给风险定价先 profiling 得 P算 1/(1-P)P≥95%当前核数 1020 倍上限远未触及继续加核边际收益高P90%已到 100 核S(100)9.17x距上限不足 1x停止加核回头改串行部分问题规模随机器数增长阿姆达尔前提不成立按古斯塔夫森定律扩规模实测加速明显低于公式通信或锁开销在吃掉收益剖析锁等待与 RPC 往返串行段是 I/O 或外部调用串行比例是结构性的硬件救不了换串行部分的算法或架构任何扩容决策前先在表里找到自己的行。行动清单测出串行比例 P算出加速上限 1/(1-P)S(n) 距上限不足 1x 时停止加核问题规模可扩展时改用古斯塔夫森定律评估项目资源README.mdAmdahls Law 原始表述与示例LICENSEMIT 许可translations/多语言译本目录【免费下载链接】hacker-laws Laws, Theories, Principles and Patterns for developers and technologists.项目地址: https://gitcode.com/GitHub_Trending/ha/hacker-laws创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考