A9VG电玩部落论坛

 找回密码
 注册
搜索
查看: 67|回复: 4

[技巧攻略] 一种 PC 串流服务器秒级暂停/恢复思路

[复制链接]

版主

己所不欲,勿施于人

精华
0
帖子
5859
威望
0 点
积分
7004 点
种子
1944 点
注册时间
2018-5-8
最后登录
2025-12-2
 楼主| 发表于 2025-12-2 10:15  ·  北京 | 显示全部楼层 |阅读模式
书接上文:https://bbs.a9vg.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 方案一致,比如运行期间的低功耗。



如上,跟大家分享最近串流服务器暂停/恢复的新思路。

版主

己所不欲,勿施于人

精华
0
帖子
5859
威望
0 点
积分
7004 点
种子
1944 点
注册时间
2018-5-8
最后登录
2025-12-2
 楼主| 发表于 2025-12-2 10:22  ·  北京 | 显示全部楼层
顺便我最近在开发 AutoActions(参见之前我发的主题 https://bbs.a9vg.com/thread-8914060-1-1.html)的一个跨平台替代,我希望能够进一步做到比如游戏自动化应用某个操作级,不用每次都手工添加。而且做了一个插件商店,大家有特殊的需求我也可以随时编写新的插件来实现。待测试没问题之后再开源和分享给大家。



精华
0
帖子
1000
威望
0 点
积分
1014 点
种子
449 点
注册时间
2007-5-27
最后登录
2025-12-2
发表于 2025-12-2 10:34  ·  广东 | 显示全部楼层
牛逼,干货顶一个

版主

己所不欲,勿施于人

精华
0
帖子
5859
威望
0 点
积分
7004 点
种子
1944 点
注册时间
2018-5-8
最后登录
2025-12-2
 楼主| 发表于 2025-12-2 10:53  ·  北京 | 显示全部楼层
顺便分享我目前的主力串流机 Pocket Fit,非广告,最近又喜欢上小屏了。缺点是非常容易沾指纹和积灰,北京更是如此。START 按键会被遥杆挡住,每次按都很麻烦。屏幕不是 OLED(当然对有些人是优点)。



之前入过 PS Portal,啥都好,就是码率实在是太低,后来还是给出掉了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|A9VG电玩部落 川公网安备 51019002005286号

GMT+8, 2025-12-2 10:56 , Processed in 0.188736 second(s), 12 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部