回复
PC综合讨论区
[技巧攻略] 一种 PC 串流服务器秒级暂停/恢复思路
只看楼主
1楼
BYPASS
收藏
2025-12-2 10:15
书接上文:
https://bbs.luryl.com/thread-9039926-1-1.html
,我在 Linux 环境搭建了一套专门的 PC 游戏串流服务器,里面使用了 docker pause/unpause 来暂停容器,从而实现游戏的暂停和恢复,但是这个方案的缺点是如果暂停之前不杀掉 Sunshine 进程,则显卡不能进入 P8 低功耗模式,功耗还是很高,而杀掉 Sunshine,在恢复的时候会出现各种问题,恢复也很慢,导致实际体验并不理想。
最近突然想到为什么不干脆使用 Linux 自己的 SIGSTOP/SIGCONT 信号机制来暂停和恢复 Steam 进程以及所有的子进程(包括游戏)呢,所以写了一个新的脚本进行测试,实际的体验还挺不错。脚本地址:
https://gist.github.com/ihainan/20cc4666a30bf5f7336cfff3a2b29f30
原理大家可以理解成,Linux 下有一个命令可以冻结一个应用,也有一个命令可以取消冻结一个应用。之所以我们要把 Steam 一起冻结,是为了让 Steam 的游戏时间统计也跟着暂停,而且 Steam 一个账号在多个设备只允许同时运行一个游戏,我们要避免暂停期间其他设备无法游戏。
实际测试效果如视频,恢复和暂停都是 1s 之内。
我先把代价说出来:因为没有对整个容器进行暂停,内核时间还在正常走,一些游戏,比如 P3R,存档统计时间是物理时间,你
暂停的时间也算在内
。理论上这个问题也可以通过伪造进程时钟(比如使用 libfaketime)来解决,但是我需要时间去研究。
那么优点是什么呢:
首先自然是秒级的暂停和恢复,非常快。其次是很稳定,我使用了一周多了,方便 P3R 爬塔随时待机,目前没遇到什么问题。其他优点与 docker pause 方案一致,比如运行期间的低功耗。
如上,跟大家分享最近串流服务器暂停/恢复的新思路。
2楼
BYPASS
2025-12-2 10:22
顺便我最近在开发 AutoActions(参见之前我发的主题
https://bbs.luryl.com/thread-8914060-1-1.html
)的一个跨平台替代,我希望能够进一步做到比如游戏自动化应用某个操作级,不用每次都手工添加。而且做了一个插件商店,大家有特殊的需求我也可以随时编写新的插件来实现。待测试没问题之后再开源和分享给大家。
3楼
230450
2025-12-2 10:34
牛逼,干货顶一个
4楼
BYPASS
2025-12-2 10:53
顺便分享我目前的主力串流机 Pocket Fit,非广告,最近又喜欢上小屏了。缺点是非常容易沾指纹和积灰,北京更是如此。START 按键会被遥杆挡住,每次按都很麻烦。屏幕不是 OLED(当然对有些人是优点)。
之前入过 PS Portal,啥都好,就是码率实在是太低,后来还是给出掉了。
5楼
ccxp
2025-12-2 11:37
楼主nb~
6楼
revolution
2025-12-2 11:53
跟版主同样配置
验证问答:
输入下面问题的答案
23 - 6 = ?
回复