ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

阿姆达尔定律:为什么核数翻4倍,任务只快了一点

阿姆达尔定律:为什么核数翻4倍,任务只快了一点 阿姆达尔定律为什么核数翻4倍任务只快了一点【免费下载链接】hacker-laws Laws, Theories, Principles and Patterns for developers and technologists.项目地址: https://gitcode.com/GitHub_Trending/ha/hacker-laws上周我们把一台 4 核的离线清洗机升到了 16 核期望那个 10 分钟的 ETL 任务缩到 2 分半结果跑完一看9 分 24 秒——哦不是 4 分 22 秒。没翻车也远没到预期。问题不在机器而在一个 1967 年就写好的公式阿姆达尔定律Amdahls Law阿姆达尔定律。它说的是并行能快多少不取决于你有多少核而取决于程序里有多大比例必须排队串行执行。读完这篇你会拿到一个可直接套用的加速比公式、一张对照表以及一套定位串行瓶颈的步骤。本文事实均引自开源项目 hacker-laws一个面向开发者的定律、原则与模式合集的 README.md。图1并行比例P越高加速曲线爬升越久P 低时曲线很早就贴住天花板来源images/amdahls_law.png先算一笔账核数翻 4 倍为何只省 1 分钟假设这个 ETL 任务总共 10 分钟拆开看4 分钟必须串行顺序扫描源库增量日志 按业务主键去重天然有先后依赖6 分钟可以并行各数据分区相互独立可以分片处理。那么4 核4 6/4 5.5 分钟加速比 1.82 倍16 核4 6/16 ≈ 4.4 分钟加速比 2.29 倍看到问题了吗硬件投了 4 倍收益只从 1.82 倍挪到 2.29 倍省下来的时间连 1 分钟 15 秒都不到。而且无论加多少核这个任务永远不可能低于 4 分钟——那部分串行的日志扫描就是地板。结论可以直接带走并行优化的预算应该优先花在提高可并行比例上加核是最后一步不是第一步。看懂阿姆达尔定律的出处与公式这条定律出自计算机科学家 Gene Amdahl吉恩·阿姆达尔1967 年的工作最初是他在评估大型并行机方案时提出的反驳串行部分永远压着整体收益的天花板。白话讲就是盖子定律——锅再宽勺子串行部分舀得再快一锅汤能多快喝光由勺子决定。公式只有一行行内公式可直接抄进评审文档S(n) 1 / ((1−P) P/n)。其中 P 是可并行化比例n 是处理器数S(n) 是加速比。hacker-laws 的 README.md 对它的定义是Amdahls Law is a formula which shows the potential speedup of a computational task which can be achieved by increasing the resources of a system.阿姆达尔定律是一个公式展示通过增加系统资源能达到的计算任务潜在加速比。同文档还给了一个很扎心的观察50% 可并行的程序超过 10 个处理单元后收益所剩无几而 95% 可并行的程序上千个处理单元仍能明显提速——先问 P 是多少再谈 n 要多少顺序反了就是烧钱。如何估算多核加速比对照表与算例把常用并行比例和核数组合算好以后拍方案时直接查表可并行比例 P4 核16 核64 核理论上限 1/(1−P)60%1.82x2.29x2.44x2.5x80%2.50x4.00x4.71x5x95%3.48x9.14x15.42x20x拿开头那个 ETL 任务完整推一遍S(16) 1 / (0.4 0.6/16) 1 / 0.4375 ≈ 2.29对应 10 / 2.29 ≈ 4.4 分钟与前面分片手算一致上限 1/(1−0.6) 2.5 倍对应最短 4 分钟。再看 60% 那一行从 16 核到 64 核加速比只从 2.29x 涨到 2.44x——当 n 增大到 P/n 远小于 (1−P) 之后每加一倍核数的收益都小得可以忽略这时候继续采购是负收益决策。如何定位程序里的串行瓶颈定律是尺子先学会拿尺子量先做性能剖析Profiling用工具测量各段真实耗时别凭直觉。常见翻车是以为瓶颈在数据库查询实测是结果序列化写文件那 20% 的时间。把串行部分分类资源竞争锁、单消费者队列、顺序依赖A 的输出必须喂给 B、I/O 等待。三类病药方不同。对每个瓶颈问三个问题能不能拆成独立分片能不能预计算或缓存掉能不能挪到关键路径之外异步化、先返回再补全改完重新量 P把新数字代回公式再决定要不要加核。没有 profile 数据的并行化立项都是在赌——P 是量出来的不是设计出来的。阿姆达尔定律在哪些场景会失真定律给的是上限估计有两种情况它会算不准问题规模一起放大时古斯塔夫森定律Gustafsons Law古斯塔夫森定律指出数据量增长时并行部分随之膨胀串行部分的占比被稀释。同样是 10 核机器处理 10 倍数据时的实测加速往往超过阿姆达尔的预测。所以固定问题规模用阿姆达尔可扩展问题规模用古斯塔夫森两套尺子量两个世界。并行反而更慢时通信、同步、锁开销会吃掉收益小粒度任务配高频锁是典型负优化。另外单核时工作集装不进缓存、分片后各核缓存命中率上升还会出现超线性加速——实测比 n 倍还快。超了上限去查缓存红利低于预期去查通信开销方向不会错。三条行动清单把定律当验收标准立项并行优化前把 S(n) 1 / ((1−P) P/n) 写在白板上填入 profile 量出的 P若 1/(1−P) 不足 4先谈重构算法别谈采购。用上面的对照表给硬件方案设卡报价的核数若落在加速曲线已贴天花板的位置按无效扩容驳回。把定律当验收上限而非承诺压测结果超过预测写进复盘查原因低于预测查同步开销。本文定律条目引自 MIT 许可的 hacker-laws 仓库许可证见 LICENSE同仓库还收录 90–90 规则、古德哈特定律等上百条开发者定律提供 多语言译本 与 PDF 电子书想拉取完整仓库git clone https://gitcode.com/GitHub_Trending/ha/hacker-laws。下次硬件扩容申请递上来之前先让它回答一个问题P 到底是多少。【免费下载链接】hacker-laws Laws, Theories, Principles and Patterns for developers and technologists.项目地址: https://gitcode.com/GitHub_Trending/ha/hacker-laws创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表