一张被动散热的矿改卡插进家用机箱,前面板三把风扇全速转,跑满载三分二十秒,核心从 74 度爬到 92 度,显存 90 度。卡自己报的 Max Operating 是 85 度,硬件强制降频线 95 度,断电保护 98 度——三分二十秒,热平衡都还没到,就已经越线了。
然后我用扎带把一把 120mm 风扇绑在一个 3D 打印的导风罩上,缝隙拿纸片塞住。同样满载,107W 的时候 64 度。
成本:几根扎带和一张纸。
风量没变多,卡没换,机箱没换。变的是那些空气到底从哪儿过去的。这篇讲怎么把这件事量成一个数,以及我在量它的过程中翻的六次车——最丢人的一次是:有个数我用了四个章节、四轮实验,后来发现它是主板 ACPI 表里写死的常数,机器从书房搬到客厅它都纹丝不动。
想直接拿判据的看第二节,那是一个减法除一个数;想看我怎么把自己的数据全污染了的,看第六节。
1. 为什么机箱风扇对这类卡完全没用
消费级显卡自己带风扇,吹哪儿不用你管。数据中心卡不带,它假设自己插在服务器机箱里,前面一排暴力扇把空气从机架前面一路怼到后面,卡只是这条风道上的一段。它的散热鳍片密得像一沓卡片,就是为这种「有人在后面使劲推」的场景设计的。
家用机箱没有这个前提。机箱风扇吹出来的风一出扇框就散开了,从卡旁边流过去,不是穿过去。转速拉满只是让它散得更快。
这里有个词值得先说清楚:静压。风扇有两个能力,一个是在没有阻力的空旷地方能推多少空气(风量,CFM),一个是顶着阻力还能推进去多少(静压,通常标 mmH₂O)。密集鳍片是极高阻力的东西,所以对这类卡,厂商标称的风量几乎没有参考价值,静压才是那个决定性的数。
我后来算过,喂一张这种卡的独立风道,系统阻抗系数大约 0.015。这个数你自己那台机器多半不一样,但它的作用是一样的:它决定了一把风扇的标称参数最后会落到哪个工作点上。
2. 判据:热阻,一个减法除一个数
散热好不好,不能看温度。温度是功耗和环境温度的函数,换个功耗就变。要比的是这个:
热阻 Rth = (稳态温度 − 进气温度) ÷ 功耗 单位 °C/W
意思是「每往这张卡上加 1 瓦,它比环境高几度」。这不是什么经验规律,就是个除法。
它的用处是反过来算:
撞墙前能喂多少瓦 = (温度墙 − 进气温度) ÷ Rth
拿我的实测代进去。三把风扇串联、罩子封好之后,满载稳态是 82.0 度,功耗 200.1 瓦,进气按 27.8 度算:
Rth = (82.0 − 27.8) ÷ 200.1 = 0.2709
85 度容量 = (85 − 27.8) ÷ 0.2709 = 211 W
改成两把风扇,同一天同一套东西,Rth 是 0.2981,85 度容量 192 瓦。多一把风扇换来 19 瓦。
再往回退到最开始那个塞纸片的版本,Rth 0.371;机箱风扇乱吹那个版本,0.626。从 0.626 到 0.2709,散热能力翻了 2.3 倍,全程没花过一分钱在散热器上——买的是风扇和一卷耗材。
关键是「稳态」两个字,它是这套方法唯一的硬门。 换罩子那天我第一眼对比,用的是「换罩前 199 瓦 79 度」这个数,得出「新罩子更差」的结论。那个 79 度是我远程连上去随手抓的瞬时值,当时负载才刚起来。新罩子那次跑到第一分钟也才 55.7 度,要是只抓那一刻,Rth 能算成 0.15,直接吹上天。
拿瞬时值跟稳态值放一起比,结论必然反向。这是我在这条线上翻的第一辆车。
3. 加了第三把风扇,卡没更凉,只是更安静了
后来我想再压一压,问题变成「出风口那边再加一把抽风扇是不是更好」。
按直觉是更好的。实际算下来,性能收益严格等于零。
因为这台机器的功耗墙当时定在 200 瓦,而实测里温度压根没让卡掉过一次频:
因温度降频的时间 0 秒 / 181 秒 = 0%
因功耗墙限频的时间 3 秒 / 181 秒 = 1%
限制它的是我自己设的那堵功耗墙,不是散热。温度不是当前的瓶颈,那把温度再降 5 度也换不来一个 MHz。这是数学上的零,不能叫「收益小」。
更有意思的是第二层。我给罩子上的风扇写了个温控闭环,温度低就自动降速。所以真降下来 4 度会发生什么?
当前 82-83 度 → duty 97% → 1982 rpm
若降到 78 度 → duty 82% → 约 1630 rpm
风扇自己就慢下来了,热阻跟着回升,稳态停在中间某个点。散热余量被闭环转换成了噪音收益,不是温度收益。
噪音这边有个好用的定律:声功率大致正比于转速的五次方,所以
ΔdB ≈ 50 × log₁₀(转速比)
50 × log₁₀(1982 ÷ 1630) = 4.2 dB
大约安静 4 分贝,主观响度降四分之一左右。这是那把风扇唯一真实的收益。
这件事我第一次回答的时候说「装上一个数字都不会变」,被当场打回——温度当然会降,我把「对性能零收益」错说成了「零效果」。可迁移的教训是:说「没用」之前,把收益按维度拆开(性能 / 温度 / 噪音 / 寿命),逐项给数。某一维是零不等于全都是零。 而人家在意的那一维,常常恰好就是唯一有收益的那一维。
4. 「小风扇静压天生高」这句话,方向是反的
这句话我也说过,还拿它给过选型建议。后来被翻出来对质,实拉规格一看,反了。
静压大致正比于叶尖线速度的平方,而叶尖线速度是:
u = π × 直径 × 转速 ÷ 60
120mm @ 2000rpm → 12.57 m/s
92mm @ 2000rpm → 9.63 m/s
同转速下,直径小的那个叶尖跑得慢,静压只会更低。 官方数据对得上:同为 2000 转,一款 120mm 静压 2.34,一款 92mm 静压 2.28,92mm 略低,而且风量少两成多。
那这句口头禅为什么流传这么广?因为它有个没说出口的前提:小风扇通常跑更高转速。92mm 常见 3000 到 6000 转,120mm 很少。机架里那些 40mm 风扇静压吓人,靠的是 15000 转,不是直径小。
所以正确的说法是,决定静压的是转速和叶片设计,直径只有在「同噪音预算下大的更优」这个意义上有用。92mm 只在物理装不下 120mm 的时候才选。
4.1 串联真正的价值:让每把都转得更慢
这是整件事里最反直觉的一条。串联两把风扇,静压翻倍,噪音加 3 分贝——听起来是拿噪音换性能。但换个用法:
静压 ∝ 转速² 风量 ∝ 转速
单把噪音变化 = 50 × log₁₀(转速比)
N 把叠加 = 单把噪音 + 10 × log₁₀(N)
右边那个 +10·log₁₀(N) 涨得很慢,三把才 +4.8 分贝。左边那个 50·log₁₀(r) 掉得飞快。所以多加一把,然后一起降速,净效果是更安静。
代进我那个风道的目标流量:
| 方案 | 每把转速 | 估算总噪音 |
|---|---|---|
| 2000 转款 ×2(当时现状) | 2000 rpm | 32.7 dBA |
| 2000 转款 ×3 | 1670 rpm | 30.6 dBA |
| 3000 转款 ×1 | 2964 rpm | 43.2 dBA |
同一款扇从两把改三把,白拿 2.1 分贝。而单独一把跑得飞快的扇,静压跟两把慢扇串联差不多(7.63 对 7.88),噪音贵了将近 11 分贝。
唯一的成本是厚度和钱。 所以有人问「一把够不够」的时候,正确答案通常是「越多越好」而不是「一把够了」。
4.2 但串联抬不了风量上限
这是上一条的硬边界,也是它最容易被用坏的地方。
风扇的压力-流量曲线,串联把静压那一端乘以 N,但右端点那个最大风量纹丝不动——它由扫掠面积和叶片决定。所以工作点的流量存在一个跟串联多少把无关的天花板。
拿一款 92mm 风扇算(最大风量 46.44 CFM,目标 21.83):
×1 → 11.92 CFM
×3 → 19.40 目标 21.83,还够不着
×10 → 29.86 十把才勉强过,毫无意义
先看最大风量够不够,那是天花板;再看静压,那个可以靠串联堆。 最大风量不够的扇,串多少把都是白花钱。
5. 拆穿数字:两个都叫「热阻」,差 2.6 倍
这一节给你一件武器。
热阻有两种算法,名字一样,量的不是同一个东西:
| 方法 | 公式 | 含义 |
|---|---|---|
| 单点法 | (温度 − 进气) ÷ 功耗 | 含常数项 |
| 斜率法 | Δ温度 ÷ Δ功耗 | 只含增量 |
单点法把卡待机的那部分基底温度也除进去了,斜率法没有。我在多个功耗档做过一次回归,拟合出来 T = 54.0 + 0.143·P,那个 0.143 是斜率。而同一张卡同一个风道的单点法是 0.2443。
拿 0.143 去比 0.2379,能得出「散热好了 2.6 倍」这个假结论。我真的得出过。
看任何一份散热数据,先问它是怎么算的,有没有截距那一项。 同理还有一个在风扇圈更常见的:宣传语写着「高风量」但三个关键数一个不给。高风量和高静压是相反的取舍——叶片平缓、叶数少的推得远但遇阻力就垮;叶片陡峭、叶数多的能顶住鳍片。一个标榜高风量却不公布静压的产品,在高阻力风道上默认不可用,硬件规格再漂亮也一样。
还有一类更隐蔽的:我曾经判定某款涡轮扇「铭牌 21.6 瓦,主板接头只给 12 瓦,超规格 1.8 倍,别插」。被反问「我看别人就这么接的怎么没事」——他是对的。那两个数不是同一个量:风扇铭牌标的是最大/堵转额定,主板接头标的是连续额定。拿峰值比连续值,必然得出超规格。餐巾纸算一遍就露馅:那个尺寸的涡轮在典型工作点的气动功率大约 1.11 瓦,按 15% 到 25% 的效率反推,电功率 4.4 到 7.4 瓦。真要连续吃 21.6 瓦,得吹出 78 CFM,那个尺寸物理上做不到。
任何「A 超过 B 所以不行」的结论,先确认 A 和 B 是同一口径。 同类陷阱:峰值功耗对 TDP、突发带宽对持续带宽、电源峰值输出对额定输出。
6. 我量了四章的环境温度,是块写死的常数
这是这篇里最该被记住的一段。
上面所有热阻都用了「进气温度 27.8 度」这个值,来自系统里的一个温度传感器。我用它算了四个章节的数据。
后来机器从书房搬到客厅,我顺手复测。Rth 三次落在同一个点上(极差 1.3%),罩子没松、堵板没掉,很好。但有个细节不对劲——换了个房间,那个数还是 27.8。
for i in 1 2 3 4 5; do cat /sys/class/thermal/thermal_zone0/temp; sleep 1; done
# 27800 27800 27800 27800 27800
跨房间搬迁、重启、CPU 温度从 34 变 38,它纹丝不动。这是主板 ACPI 表里的一个常数,根本不是传感器读数。这台机器没有真正的机箱进气传感器。
影响面:前面四章里每一个 (T − 27.8) / P 都用了这个假值。
但影响的形状很有意思,值得拆开:
- 历史数据之间仍然可比——分母恒定等于统一偏置,所有内部对比都成立,「加第三把风扇改善 9.1%」那类结论有效。
- 绝对值一直偏高约 12%——环境被低估,热阻被高估。
换一个真实的基准(同机箱里那张空载的显示卡,33.8 度,同风道同环境,最贴近罩扇进气),热阻从 0.2680 修正到 0.2379。
而 85 度容量呢?213 瓦对 215 瓦,差 1%。因为 温度墙 − 进气 和 Rth 是同向变化的,误差自己抵消掉了。历史上那些容量结论全都不受影响。
可迁移的判据:任何充当基线、参照、归一化分母的量,都要单独验证它真的会随被测条件变化。不变的参照系等于失效,别把它读成稳定。 我是靠「搬了个房间它还是 27.8」才抓到的——要是一直在同一个房间测,这个假值可以骗过任意多次实验,因为它的错误是恒定偏置,在所有内部对比里都自动抵消,永远不会露馅。
同类的东西:固定值的对照组、缓存住的基线、写死的阈值、永远返回同一个数的健康检查。
7. 其余几辆车,一并交代
理论外推系统性偏乐观。 装第三把风扇之前,我按压力-流量交点解预测「流量涨 19.7% → Rth 0.2628 → 218 瓦」。实测 0.2709 / 211 瓦。方向对,幅度乐观了约三分之一。同一天还有一次更离谱的,扫风扇占空比预测 111 度,实测 84 度。凡涉及决策的数字,实测,不外推。
吞掉子进程的错误输出等于把失败伪装成静默的成功。 第一版压测脚本用系统 Python 起负载,而计算库只装在虚拟环境里,模块找不到瞬间退出。因为错误流被丢进了黑洞,脚本毫无察觉,老老实实测了五分钟空载(48 瓦,SM 210 MHz),差点报出一个假热阻。修复版加了两道防线:用虚拟环境的解释器并且先断言路径存在;预热期验证功耗 ≥120 瓦且利用率 >80%,达不到直接中止。宁可失败不给假数。
R² 从 0.99 掉到 0.92 就是有档没热平衡,别急着解释物理。 做清灰前后对照时,第一个功耗档测出差了 7 度,我差点当成清灰的效果。实际是那张卡从 32 度冷机起步,探针的 100 秒预热对第一档不够,六个采样点还在单调爬(55→57→58→60→61→62)。去掉首档,拟合优度从 0.9241 回到 0.9958。做前后对照,两组的起始热状态必须一致——这类污染在 R² 上看得见,在均值上看不见。
对照组的「未处理」状态是需要证据的断言,不是默认值。 还是那次清灰对照,我拿两张不同的卡比,算出清灰改善 1.0%——小于测量噪声 1.3%,结论是「清灰不值得为性能做」。这个结论我保留,但必须同时说清它的边界:唯一没排除的混杂项是卡间个体差异(硅片漏电、导热垫压合、散热器贴合公差),两张不同的卡,个体差异完全可能跟灰的效应同量级甚至相互抵消。我拿到的是「1.0% 这个上界」,不是「灰的效应等于零」这个点估计。要真排除它,得同一张卡清灰前后各测一轮,中间不拆罩子。
规格一律实拉官网,不许凭印象。 同一场对话里我凭记忆报错四次:两款风扇的静压分别高估 22% 和 8.6%,「92mm 静压天生高」方向说反,还漏列了最该做基准的那一行。人家记得我前面说过什么,会当场对上。
8. 还没做完的
诚实起见列一下,这几处补完之前我不会把结论说死:
- 第 4 节那个叶尖线速度模型,按平方关系算 92mm 静压应该只有 120mm 的 0.588 倍,而两款实际官方数据的比值是 0.974。方向对,幅度差很远——因为叶片设计、叶数、框架结构的影响跟直径同量级,那个正比关系只能用来判方向,不能用来算绝对值。我在这篇里只拿它推「谁高谁低」,没拿它算过任何一个决定。
- 热阻的绝对值全部依赖那个替代的进气基准(空载显示卡温度)。它同机箱、零负载、同风扇吹,是我能拿到的最好代理,但它不是真的装在进气口的传感器。
- 环境温度是季节变量。每升 1 度稳态跟着升 1 度,所以上面所有功耗墙的结论,夏天回暖后都要重测。
- 清灰那条只有 1.0% 的上界,没有点估计,原因见上一节。
9. 照着做的顺序
下次给一张被动卡配散热,按这个顺序走,别从产品目录开始挑:
- 先量现状的热阻。 满载跑到稳态——跑到温度在 ±1 度里抖动为止,别随手抓一个瞬时值——然后
(温度 − 进气) ÷ 功耗。 - 确认你那个「进气温度」真的会动。 改变环境(换房间、开窗、加个风扇)再读一遍,纹丝不动的那个数不能用。
- 从目标功耗反推需要的热阻,
(温度墙 − 进气) ÷ 目标瓦数,再反推需要多少流量和静压。 - 再去翻产品目录,先看最大风量够不够(天花板,串联堆不上去),再看静压(可以靠串联堆)。
- 产品池里必须有工业厂商。 只翻消费级品牌会系统性地得出「做不到」的错误结论——消费级 120mm 静压天花板大约 7.6 mmH₂O,工业 92mm 轻松 20 到 28。但下单前确认是 4-pin PWM,2 线的调不了速,买了就是全速常吵。
- 同噪音预算下,宁可多串一把慢的,别换一把快的。
- 改完重测,别信外推。 我的外推乐观了三分之一,而且是往好的方向乐观。
最后一条:那个塞缝的纸片,我一直打算换成铝箔胶带。到现在还是纸。