Gimel 发表于 2023-2-10 12:04

steam deck免费性能提升

本帖最后由 Gimel 于 2023-2-13 21:28 编辑

来自于https://steamdeck.fyi/,这里翻译一下做法,加上部分个人理解解释。
1.内存交换设置调优
前提条件:梯

做法:
用steamdeck桌面模式的浏览器右键(屏幕的话则是长按)Save link as以下链接 https://raw.githubusercontent.co ... yoUtilities.desktop
进入下载到的文件夹,双击打开,会安装CryoUtilities,返回桌面双击CryoUtilities,会弹出设置推荐,按照其推荐设置点选设置即可。
Swap Size: 16GB
Swapiness: 1
TRIM: Enabled

个人解释:
Swap相关设置为linux的内存交换配置,Swap Size顾名思义是可暂存至硬盘(SSD)的内存的大小,而Swapiness则是当前使用未使用内存达到该百分比时将部分内存暂存至硬盘(SSD)中;
steamdeck的原生设置非常弱智,Size 1G, Swapiness 100,也就是它会非常积极地在内存还没用多少的时候就先把内存里的东西存到硬盘(SSD)里,而硬盘(SSD)显然读写速度比内存低的多,导致这里有不必要的性能损耗;
实际linux使用中,这个Size会根据硬盘(SSD)大小配置,而Swapiness也会是小于10;而steamdeck完全是个游戏机,根本不需要给内存留什么空闲。

TRIM则是SSD的特性,这是一种用于回收设备上未使用的块的方法。一些数据块可能先前已被写入,但不再包含有效数据,因此可以返回到通用存储池以供重用。
TRIM就是告知SSD这些文件(块)已经删除了,可以提前擦写以提高性能。配合虚拟内存服用更好。

实际效果:
是上面链接里面的里的youtube视频测试了,我根本没测,不保证真实性。
给她爱5 中等设置平均帧率 62 -> 71,低等设置63 -> 79
2077 中等设置平均帧率 31 -> 34,低等设置38 -> 42

2. Linux Huge Pages
前提条件:梯,设置桌面模式密码

做法:
Konsole输入
curl -L https://github.com/SteamDeckHomebrew/decky-installer/releases/latest/download/uninstall.sh | sh,无脑回车,要填密码填密码
安装完成后回到游戏模式,右侧触摸板下面三个点的按键按一下,应该可以看到问号tab下面多了一个小插头,点进去,右上角有一个商店标志,进去找到System Toolbox,点击安装。
退回到插头tab,点击进入System Toolbox,勾选第三个选项Linux Huge Pages。

实际效果:
见九楼,“一帧吊打”,但是配置了基本也没坏处,有功夫可以搞一下。

3. VRAM 4G
网站还提到一个修改VRAM的方案,但是那个对有些游戏比较好(老头环),有些表现则会更差,有时间再填坑吧。





back57992 发表于 2023-2-10 12:53

是真的折腾。真的话感觉早晚官方会更新。、

psvsd 发表于 2023-2-10 13:24

emmc的64g那垃圾读写速度加大swap只会适得其反吧
减小swapness对内存压力小的可以提升性能,但大的就不好说了

本质就是调虚拟内存(

Gimel 发表于 2023-2-10 13:40

psvsd 发表于 2023-2-10 13:24
emmc的64g那垃圾读写速度加大swap只会适得其反吧
减小swapness对内存压力小的可以提升性能,但大的 ...

emmc肯定是没啥尝试的必要了,而且还占用了1/4的存储;而不论内存压力大小,swapiness任何大小一定比100好,当然你说有没有对每个游戏能微调出一个更适合的值我觉得肯定有的。

论坛助手,iPhone

医生狼多 发表于 2023-2-11 13:57

Save link as时显示没法下载?

Gimel 发表于 2023-2-13 11:56

医生狼多 发表于 2023-2-11 13:57
Save link as时显示没法下载?

因为它是github托管的存储空间,国内可能没法直连?我想想办法晚上搞个网盘链接啥的,文件很小就几kb

论坛助手,iPhone

Midnight.Coup 发表于 2023-2-13 11:59

本帖最后由 Midnight.Coup 于 2023-2-13 12:03 编辑

swapiness=100 可还行,arch 用户第二遍装系统都会设置的数字,V 社犯了和果子 M1 刚出那会一样的错误是吧
Steam Deck 默认带有 1GB Swap 文件,Swapiness 设置为 100,并禁用 TRIM

mashav 发表于 2023-2-13 12:16

本帖最后由 mashav 于 2023-2-13 12:19 编辑

重复编辑


mashav 发表于 2023-2-13 12:16

那个视频作者还有个优化 Linux Huge Pages 的插件设置和测试FIXING God of War on Steam Deck! | Deck Dive - YouTube



Gimel 发表于 2023-2-13 12:46

mashav 发表于 2023-2-13 12:16
那个视频作者还有个优化 Linux Huge Pages 的插件设置和测试FIXING God of War on Steam Deck! | Deck Dive ...

hugepage从我的理解里主要是解决可以节省一部分内存地址映射表的开销,但是从实际体验上来说在家用级别的内存体量上来说映射表本身开销也不大,实际验证情况看起来也是“1帧吊打”;不过确实应该也是属于配置了基本不会有坏处的设置,我看看到时候也把具体折腾的方法放到主楼里。

论坛助手,iPhone

不见不散 发表于 2023-2-13 13:03

医生狼多 发表于 2023-2-13 19:24

Gimel 发表于 2023-2-13 11:56
因为它是github托管的存储空间,国内可能没法直连?我想想办法晚上搞个网盘链接啥的,文件很小就几kb

论 ...

搞定了,我觉得那种sd买到手后该怎么做的教程都应该说明第一步是添加tomoon

Gimel 发表于 2023-2-13 19:32

医生狼多 发表于 2023-2-13 19:24
搞定了,我觉得那种sd买到手后该怎么做的教程都应该说明第一步是添加tomoon ...

我是家里软路由了,没考虑这一层

论坛助手,iPhone

病態極端 发表于 2023-2-13 19:57

本帖最后由 病態極端 于 2023-2-13 21:53 编辑

内存回收

我们都知道,Linux一个进程使用的内存分为2种:

    file-backed pages(有文件背景的页面,比如代码段、比如read/write方法读写的文件、比如mmap读写的文件;他们有对应的硬盘文件,因此如果要交换,可以直接和硬盘对应的文件进行交换),此部分页面进page cache
    anonymous pages(匿名页,如stack,heap,CoW后的数据段等;他们没有对应的硬盘文件,因此如果要交换,只能交换到虚拟内存-swapfile或者Linux的swap硬盘分区),此部分页面,如果系统内存不充分,可以被swap到swapfile或者硬盘的swap分区

因此,Linux在进行内存回收(memory reclaim)的时候,实际上可以从1类和2类这两种页面里面进行回收,而swappiness就决定了回收这2类页面的优先级。

swappiness越大,越倾向于回收匿名页;swappiness越小,越倾向于回收file-backed的页面。当然,它们的回收方法都是一样的LRU算法。
查了一下archwiki,swappiness的值域是。SteamOS設在100,意思是認為回收無名頁跟文檔頁的IO開銷相同(是因為swap分區跟檔案系統在同一塊ssd上,所以開銷相同?)。

Gimel 发表于 2023-2-13 20:54

病态极端 发表于 2023-2-13 19:57
查了一下archwiki,swappiness的值域是&# ...
这个是red hat的官网,里面对swapiness的解释和取值范围和你说的可能还是有一些区别https://access.redhat.com/solutions/103833

Swappiness is a property for the Linux kernel that changes the balance between swapping out runtime memory, as opposed to dropping pages from the system page cache. Swappiness can be set to values between 0 and 100, inclusive. A low value means the kernel will try to avoid swapping as much as possible where a higher value instead will make the kernel aggressively try to use swap space.
这里还是说明了阈值范围为0~100,且其描述的是swaping的积极程度;我倾向于相信系统提供商的原始文档。

Gimel 发表于 2023-2-13 21:24

已更新到主楼
2. Linux Huge Pages
前提条件:梯,设置桌面模式密码

做法:
Konsole输入curl -L https://github.com/SteamDeckHomebrew/decky-installer/releases/latest/download/uninstall.sh | sh,无脑回车,要填密码填密码
安装完成后回到游戏模式,右侧触摸板下面三个点的按键按一下,应该可以看到问号tab下面多了一个小插头,点进去,右上角有一个商店标志,进去找到System Toolbox,点击安装。
退回到插头tab,点击进入System Toolbox,勾选第三个选项Linux Huge Pages。

实际效果:
见九楼,“一帧吊打”,但是配置了基本也没坏处,有功夫可以搞一下。

病態極端 发表于 2023-2-13 21:29

本帖最后由 病態極端 于 2023-2-13 21:41 编辑

Gimel 发表于 2023-2-13 20:54
这个是red hat的官网,里面对swapiness的解释和取值范围和你说的可能还是有一些区别https://access.redhat ...
因為Linux 5.8內核之前,swappiness取值在吧。那篇文章也說了:「因為Red Hat 6重構了swapping算法,所以別看這文章了」
不過SteamOS 3本來就是用Arch改的,所以還是看ArchWiki吧。
或Linux文檔:https://docs.kernel.org/admin-guide/sysctl/vm.html#swappiness


Gimel 发表于 2023-2-13 21:41

本帖最后由 Gimel 于 2023-2-13 21:42 编辑

病态极端 发表于 2023-2-13 21:29
因为Linux 5.8内核之前,swappiness取值在 ...
你这部分说的是对的,它是arch改的,我看了一下deck的内核版本是5.13,所以swapiness取值是0~200也是对的,我也去看了一下archwiki,https://wiki.archlinux.org/title/Swap#Swappiness这里对swapiness的描述还是说了
A low value causes the kernel to avoid swapping, a high value causes the kernel to try to use swap space, and a value of 100 means IO cost is assumed to be equal. Using a low value on sufficient memory is known to improve responsiveness on many systems.
它甚至提了一句在充足的内存上用一个较低值可以在很多系统中提高反应速度。
steamdeck的16G充不充足那具体得看什么游戏,但是还是主楼那句话,这就是个游戏机,内存没必要留,先打满内存再考虑转存我个人认为是好的,实际视频主测试在算是比较有代表性的3A游戏上一眼提升。


病態極端 发表于 2023-2-13 21:55

Gimel 发表于 2023-2-13 21:41
你这部分说的是对的,它是arch改的,我看了一下deck的内核版本是5.13,所以swapiness取值是0~200也是对的 ...

只是想說雖然結論是對的,但是swappiness不是主樓說的那個內存百分比。

SergeGlenn 发表于 2023-2-15 01:53

改了内存这个后一个明显的感觉是,部分放在内存卡上会明显卡顿的学习版游戏改善很大

back57992 发表于 2023-2-19 12:02

第二个安装代码错了成卸载了。。
页: [1]
查看完整版本: steam deck免费性能提升