把云游戏服务器搬到离玩家更近的地方,几乎每个人都会说这是好事:延迟降低,体验变好。这句话对延迟成立,对能耗未必成立。一个只有少量会话的小型边缘节点,在半夜可能有大部分设备闲着,而闲着的服务器依然在耗电。“近”只解决了路上的时间,没有解决机器有没有被充分使用的问题。下面用一组假设的示例数值,把这件事拆开。
离玩家更近,究竟省下了什么?
先承认边缘的好处。视频流从服务器到玩家,中间要经过若干次路由转发,路径越短,往返延迟越小,抖动的来源也越少。对竞技类游戏,几毫秒到十几毫秒的差别是能被玩家感知的。路径缩短还意味着数据经过的网络设备变少,理论上网络侧的传输开销也会略有降低。此外,靠近玩家也让服务提供方有机会在区域内做更精细的调度,比如根据当地的网络状况选择编码参数。
但需要看清的是,这些收益主要落在延迟和网络这两项上。服务器本身是否更省电,取决于另一件事:它有多少时间在做有用的工作。
小节点的账:闲置功耗被谁承担?
服务器在空载时并不是不耗电。假设一台能同时承载10路会话的服务器,空载时功耗约为满载的一半(这是示例假设,实际取决于硬件和电源管理)。设满载为1000瓦,空载为500瓦,功耗随会话数大致线性增加。如果这台机器只服务3路会话,总功耗约650瓦,每路约217瓦;如果服务9路会话,总功耗约950瓦,每路约106瓦。同样的机器,仅仅因为利用率不同,每个玩家分摊的服务器开销就相差一倍左右。
边缘节点天然容易落在“利用率不稳定”的一端。它服务的是一个较小的区域,玩家数量少,就没有足够多的会话来抹平峰谷:晚间高峰可能满载,凌晨则几乎空置。而区域大节点服务范围广,不同时区、不同习惯的玩家叠加起来,利用率曲线更平缓。
一个假设的对比:小节点与大节点
下面的表格沿用上面的示例服务器模型,比较同一地区的两种部署,数值只用于演示思路。
| 项目(示例) | 边缘小节点 | 区域大节点 |
|---|---|---|
| 到玩家的往返延迟 | 约15毫秒 | 约35毫秒 |
| 晚间高峰利用率 | 约90% | 约90% |
| 凌晨低谷利用率 | 约30% | 约70% |
| 低谷时每路服务器功耗 | 约217瓦 | 约121瓦 |
| 高峰时每路服务器功耗 | 约106瓦 | 约106瓦 |
| 网络路径 | 更短 | 更长 |
这张表说明了两点。一是高峰期两者的服务器开销并无差别,小节点的劣势集中在低谷;二是网络侧的差异在表里没有给出数字,因为它很难凭空假设,需要用实际路径去测量。网络路径缩短带来的节省,是否能抵消低谷时服务器多出来的开销,无法一概而论。可参考《云游戏节能为什么不能只盯GPU》里对系统边界的讨论:不同环节的开销要放在同一条链上算,不能各算各的。
还要提醒一点:上面用“会话数”当作利用率,只是为了算起来方便。真实节点里,一路4K高帧率的竞技游戏和一路1080p的回合制游戏,占用的GPU时间、显存和编码资源完全不同,所谓“10路会话”并没有固定含义。利用率更准确的衡量,是GPU、编码器、显存和网络出口各自的占用,任何一项先到瓶颈,节点就算满了。这也是为什么降低单路会话的无效渲染有意义:每一路少占一点GPU时间,同一块显卡就能容纳更多会话,节点的有效容量随之增加,小节点在低谷时的利用率劣势也会得到部分缓解。
峰谷、排队和会话迁移会带来什么?
利用率也不是越高越好。节点接近满载时,新的玩家需要排队或被拒绝,或者被迫转到更远的节点,玩家体验反而变差。所以调度不能追求把每台服务器塞满,而要预留一定余量应对突发的入场高峰,这部分余量本身就是一种有意的“低利用率”。余量该留多少,取决于区域内玩家到达的波动程度,波动越大,需要的余量越多,小节点在这件事上尤其吃亏,因为它的统计平滑效应更弱。
再看迁移。玩家可能在通勤路上切换网络,或者从家里到公司,原来最近的节点不再最近。会话迁移需要把游戏状态转到另一个节点,过程中可能出现短暂的画面卡顿。迁移得太勤,体验受损;迁移得太少,玩家一直在用一个越来越远的节点。这里也没有固定答案,只能靠延迟阈值与迁移代价一起决策。
再补一个常被忽略的因素:玩家的到达并非完全随机。周末晚间、新游戏上线、区域性的网络故障,都会让某个节点的负载在短时间内翻倍。对小节点来说,一次突发就足以让它从“闲置”跳到“拥堵”。如果为了应对这种情形而预留大量空闲设备,平时的闲置功耗就更高;如果不预留,玩家会在高峰遇到排队。这是一对无法两全的矛盾,只能在具体区域的历史数据里找一个折中点。
九游会怎样把延迟当作前提,再去算利用率?
九游会的设计思路是把延迟当作硬约束,而不是与能耗简单加权。对于竞技类游戏,往返延迟超过某个玩家可接受的上限,就直接排除该节点;对节奏较慢的游戏,则可以接受更远的节点。这个上限本身来自游戏类型、玩家设置和终端网络状态,与《网络只有20Mbps时还渲染最高画质有意义吗》里的思路一致:先确认体验下限,再谈节省。
在满足延迟的候选节点里,再比较三样东西:当前与预计的利用率、区域剩余容量、路径的网络开销。如果多个节点都合格,优先选择利用率更合理、不会推高排队风险的那个,把会话向已经开机的节点集中,让其他节点得以进入低负载状态。这样做的前提,是节点确实支持低功耗状态,并且唤醒不会影响后续玩家,这些都是需要实测而非假设的条件。
需要坦率说明,这一切目前是方案设计,并非已经运行的结论。LBNL早期研究页面显示,云游戏在数据中心与网络侧的额外用电,极端情形下可达本地游戏的三倍,但那是较早期、基于情景假设的估算,不能直接套用到今天的边缘部署。边缘节点是否更节能,仍然要看具体的硬件、负载曲线和电网结构。
还有哪些问题没有解决?
至少有三件事仍需要真实数据才能回答。第一,节点低负载时能否真正进入低功耗状态,唤醒需要多久,会不会因此损伤体验;第二,需求预测的准确程度,预测错了,要么预留过多,要么排队变长;第三,不同地区的电网结构和冷却条件不同,同样的功耗在不同地方对应的环境影响并不一样,这一点会让“哪个节点更省”的答案随地点变化。
所以更稳妥的表述是:边缘节点是降低延迟的有效手段,是否降低整体开销,要看它的利用率。九游会不会把“离得近”当成节能的理由,也不会因为“规模大”就断言更省,而是把两个数字放在一起,随着区域负载的变化持续核对。