# 群晖性能调优指南

By [Test](https://paragraph.com/@test-33) · 2022-01-31

---

群晖DSM虽然在易用性方面非常不错，但是系统上的很多机制可以说是非常搓了，我的DS918+，自行添加内存到16G双通道，按理来说，NAS上跑的那点东西，16G内存是完全够用了，但就是这样，群晖也特别喜欢用虚拟内存，导致开机久了，我打开docker控制台，都要等7，8秒

原因就在于，群晖的配置都非常寒酸，那么高的价格只舍得配2G，4G的内存，DSM默认的vm.swappiness值设定为10，内存高的建议修改为1

所以，如果想要提高群晖系统的流畅度，首先就是要加大你的内存，之后修改DSM的vm.swappiness数值

ssh 进群晖，输入如下命令即可，不需要重启（对大部分Linux系统也适用）

目录 临时生效版 永久生效版 添加到群晖计划任务中 添加开机时刷新sysctl.conf 简单说一下vm.swappiness vm.swappiness 优化 相关文章推荐 临时生效版 之前的方法方法，虽说是永久生效，但是群晖并不会读取/etc/sysctl.conf，所以实际上，我们还是要重启后刷新一下sysctl.conf。不如直接开机时就执行修改swappiness的命令，这条命令会及时生效，调整swappiness值为1

sysctl -w vm.swappiness=1 永久生效版 sudo -I echo "vm.swappiness = 1" >> /etc/sysctl.conf

调整SWAP使用积极性为1，不要设置为0，之后会讲
=========================

swapoff -a swapon -a

临时关闭虚拟内存，让系统回收虚拟内存。开启虚拟内存
=========================

sysctl -p

刷新sysctl.conf
=============

添加到群晖计划任务中 群晖DSM有一点设计的特别好，每一块硬盘里都装有DSM系统，并且大部分对DSM的修改，在关机后都会失效，确保了安全性。所以，我们需要设置计划任务，让开机时能够执行刚才那段命令

实测修改sysctl.conf参数后，并不会会在重启后失效，不会shell的可以在计划任务中执行，第一次重启后请务必关闭或删除本计划任务

具体操作如图所示

现在开机久了，系统也依旧健步如飞，反应速度明显快了很多

添加开机时刷新sysctl.conf 虽然群晖不会把sysctl.conf恢复为默认，但是不知道DSM修改了什么，默认竟然不会读取这里的参数，所以需要添加计划任务，开机时sysctl -p

也可以添加，效果是一样的，这种就不需要像上面的步骤那样修改/etc/sysctl.conf了

sysctl -w vm.swappiness=1

简单说一下vm.swappiness 这里直接引用v2ex的一篇帖子，说的很简单透彻

[https://www.v2ex.com/t/666354#reply7](https://www.v2ex.com/t/666354#reply7)

vm.swappiness 优化 swappiness 设置为 1 比设置为 0 要好，因为在一些内核版本 swappiness 设置为 0 会触发系统 OOM-killer （注：Linux 内核的 Out of Memory （ OOM ） killer 机制）。

swappiness 的值的大小对如何使用 swap 分区是有着很大的联系的。swappiness=0 的时候表示最大限度使用物理内存，然后才是 swap 空间，swappiness ＝ 100 的时候表示积极的使用 swap 分区，并且把内存上的数据及时的搬运到 swap 空间里面。linux 的基本默认设置为 60，具体如下：

Code example 1 2 cat /proc/sys/vm/swappiness 60 也就是说，你的内存在使用到 100-60=40%的时候，就开始出现有交换分区的使用。大家知道，内存的速度会比磁盘快很多，这样子会加大系统 io，同时造的成大量页的换进换出，严重影响系统的性能，所以我们在操作系统层面，要尽可能使用内存，对该参数进行调整。

---

*Originally published on [Test](https://paragraph.com/@test-33/z3W46z19TLg8UzvGjxXf)*
