a1379388505 发表于 2023-5-3 16:52:20

提高群晖大内存的利用率

本帖最后由 a1379388505 于 2023-5-19 00:54 编辑

如下设置目的有三:
1,大提高内存以后,重新平衡CPU,内存,硬盘的负载(把原来因内存太小转移给硬盘和cpu负担转移回来)
2,以前开机久了群晖会卡,我不得不设置每周自动重启一次。现在设置以后完全不需要重启!一直流畅(前提有8G以上大内存)
3,高负荷运载时优化会十分明显。(之前虚拟机卡的厉害,设置以后虚拟机也流畅运行了。)

=========================================

本来为了开虚拟机,群晖从自带2G内存换到了16G内存,但是后来这货跑虚拟机性能实在巨卡,放弃了。

但是16G内存已经装了,观察发现这个系统设计机制就专门做了各种适应小内存的优化,不开虚拟机占用始终不超过2G(以前一直想不通群晖为什么要把各种套件做简化阉割,现在明白了,估计也是为了适应小内存)

超过的部分虽然会被DSM自动用作读写缓存,对于我这个没有ssd缓存的机器来说有点用了,但是还是想提高一下内存利用率。

经过研究如下优化:


1,降低交换内存的使用率【提高内存占用,降低磁盘读写量和I/O性能占用】
这货16G内存使用率不到20%的情况下竟然天天跑swap交换内存!
解决方法:
在任务计划中添加 root用户,开机执行:
sleep 5m && sysctl -w vm.swappiness=1
swapoff -a
swapon -a
(设置为1就好了,千万不要直接设置0关闭交换内存,会导致系统不稳定)
如果不想等下一次重启生效,那就选中这一条任务,点一下上面的“执行”
倒数5分钟以后就生效了。
如果想检查设置是否成功:
cat /proc/sys/vm/swappiness
返回的结果:默认不修改是10,设置成功就是1

参考文档:
https://sleele.com/2020/04/27/群晖性能优化-降低swap使用率/

修改之后内存占用从不到2G变成了开机3G以上,响应也明显流畅了一些。

另外竟然意外发现了虚拟机巨卡的原因!把这个修改以后虚拟机也不卡了。

关于“sleep 5m”命令的说明:DSM7.1以后的系统很神奇,开机先是linux默认的vm.swappiness=60,延迟哔声以后大约2-3分钟自动修改为“vm.swappiness=10”,如果设置开机就执行“sysctl -w vm.swappiness=1”,那么导致的结果就是开机以后设置vm.swappiness=1成功,但是延迟2-3分钟以后系统自动执行sysctl -w vm.swappiness=10,导致设置失效。所以干脆设置5分钟以后执行 sysctl -w vm.swappiness=1
这样成功率100%。

2,关闭内存压缩!【提高内存占用,降低CPU算力负担】
内存压缩还会消耗cpu算力,本身白群晖的cpu都是超级弱鸡的,关闭内存压缩以后会多占用一些内存,可以解放一部份CPU算力

控制面板>硬件和电源>常规>内存压缩>“启用内存压缩可提高系统响应性能”【去掉打勾】

参考文档:
群晖官方说明
内存压缩
您可以启用内存压缩,通过压缩内存中近期使用最少的数据来提高负载下的系统整体响应性能。

当您有多个运行的应用程序且内存开始满负荷时,动态内存压缩会压缩内存中很少使用的项目以使内存使用率降至最低。如果再度需要这些项目,它们可以立即解压缩。这可以减少硬盘中内存交换文件的读取和写入需求,提高效率和响应性能。

若要启用内存压缩,只需勾选该复选框。


目前就想到这些,大家如果还有其他的可以提出讨论。
以上方案只适用于8G内存以及以上机器,如果是2G 4G内存还是牺牲一些硬盘性能和cpu性能来弥补内存太小的影响吧。


===========================
适用人群:
不管你有没有SSD缓存!!不管有没有!
系统换了8G内存的建议开第一个,16G及以上内存的建议第二个也开。

低于2,4G内存的 如果有SSD缓存就别改了。没有SSD缓存的自己测试第一个开与不开哪个更快。

当高负荷的时候才会更明显的对比出来运行是否加快,低负荷理论上区别不大

Bob猪 发表于 2023-5-3 19:13:25

感谢分享,有空试一试。

xiecheng 发表于 2023-5-3 19:25:44

linux基本会把所有内存都当缓存用。

momo 发表于 2023-5-3 19:28:40

就是不知道系统稳定性是否受到影响。

a1379388505 发表于 2023-5-3 19:40:49

本帖最后由 a1379388505 于 2023-5-3 23:40 编辑

momo 发表于 2023-5-3 19:28
就是不知道系统稳定性是否受到影响。

linux的常规操作。
群晖默认是10,改成1
大概意思就是当内存占用超过60%的时候就开始把不常用的内存写入硬盘。改成1就是当内存使用超过99%才开始把不常用的写入到硬盘。

如果内存只有2G的时候,想让系统可以快速响应,就需要保持空闲内存几百兆,最保守也要设置10。所以出厂默认10是合理的,科学严谨的。
但是当内存16G以后,如果仍然是10,那么空闲内存就很大了,内存空着几G十几G,反而要去读写交换内存,这个就不科学了。
所以换大内存以后改1也是非常科学的

只要不是强制关闭交换内存 完全不会影响稳定性。

jndhui 发表于 2023-5-3 20:40:57

谢谢,懂了原理

oldthree6289 发表于 2023-5-3 21:44:23

讲技术原理 赞

a1379388505 发表于 2023-5-3 23:24:58

momo 发表于 2023-5-3 19:28
就是不知道系统稳定性是否受到影响。

{:7_187:}不认真整理一下都对不起这个加精

a1379388505 发表于 2023-5-4 00:56:18

jndhui 发表于 2023-5-3 20:40
谢谢,懂了原理

我修改了一下,如果你之前用了这个命令,现在需要用修改以后的才会生效

3008086 发表于 2023-5-4 09:15:57

如果是SSD硬盘做第一个盘,修改这个感知不明显的。

mzcls687 发表于 2023-5-4 09:49:51

群晖这个虚拟内存是真的坑

kokgmx 发表于 2023-5-4 15:02:42

感谢分享,试试,我装了32G内存。。。

kokgmx 发表于 2023-5-4 15:06:02

突然想起来一个问题,我装霜固态SSD作为缓存是不是不需要这么操作?

lastkiss 发表于 2023-5-5 22:14:58


感谢分享,试试

a1379388505 发表于 2023-5-6 18:22:04

本帖最后由 a1379388505 于 2023-5-6 22:13 编辑

kokgmx 发表于 2023-5-4 15:06
突然想起来一个问题,我装霜固态SSD作为缓存是不是不需要这么操作?

看你内存利用率 ram始终比缓存快的多,如果16G 32G大内存 利用率不到20% 大ram利用不起来不难受吗 那么这么操作还是可以十分显著加快的系统影响 减少磁盘读写的 缓存也有擦写寿命啊
尤其高负荷的情况下区别显著。

esac 发表于 2023-5-6 22:53:03

高端操作

cvn77 发表于 2023-5-6 23:31:52

感谢分享

A型血的我 发表于 2023-5-7 11:05:46

谢谢楼主无私分享

q276574299 发表于 2023-5-8 01:19:51

论坛有你更精彩

kokgmx 发表于 2023-5-8 10:02:42

a1379388505 发表于 2023-5-6 18:22
看你内存利用率 ram始终比缓存快的多,如果16G 32G大内存 利用率不到20% 大ram利用不起来不难受吗 那么这 ...

这倒也是,那我试试看
页: [1] 2
查看完整版本: 提高群晖大内存的利用率