大内存有没有必要创建swap

如题,电脑内存是96G,还有必要创建swap吗,因为我看有的文章说电脑休眠需要swap。

是的,如果你不需要休眠也可以不创建 swap。

我从B站某个up主了解到Linux不会自动处理,有个会好一点

完全取决于需求。

  1. 你有休眠的需求,就需要swap
  2. 你的内存不太够用、但工作集又小于内存总量,那就适合使用swap

不明白有什么需要、或者适合怎样的「自动处理」。swap的使用完全取决于需求,怎么自动呢?

其实有个很简单的办法来判断这个:你加一个swap,如果经常有占用,就说明适合使用swap;如果一直空闲着,就说明加swap无用。

明白,我以前32G内存的时候会创建swap,但现在96G内存,装系统的时候就没分配。

而且现在系统只有睡眠没有休眠,我查了一下睡眠和休眠不一样,睡眠就不需要swap了,所以我觉得我应该没必要分配swap了,万一分配了真有占用,是不是还算是拖慢速度了

不会。拖慢运行速度的从来不是swap,而是内存不足。

以后有需要加swapfile也行。很灵活的。

不分了,如果一定要就建一个swap文件,这样子行不行

如果根分区的文件系统是 btrfs 可能有点麻烦,需要重新调整 btrfs 的子卷布局[1]

我用的系统是 LinuxMint,根分区文件系统是 btrfs。我在 / 下创建 swapfile [2] 后, 执行 sudo swapon /swapfile,系统提示 swapon: /swapfile:swapon 失败: 无效的参数

顺便请教一下大家,

  1. 在 btrfs 格式的根分区上使用 swapfile 有哪些需要注意的地方?
  2. 我的硬盘上还有一个格式为 ext4、容量充足、挂载点为 /home 的分区(以下简称“home 分区”),请问是否可以将 swapfile 放入 home 分区?

  1. 参考:https://zhuanlan.zhihu.com/p/355986059 ↩︎

  2. 具体操作参考的是这篇文章:https://zhuanlan.zhihu.com/p/109084885 ↩︎

可以考虑换用 zram,这样就不需要 swapfile 了。

1 个赞

请使用btrfs filesystem mkswapfile命令来在btrfs上创建swap文件。

成功了就没什么要注意的。

创建的时候要注意:swap文件在使用时,它所在的子卷不能被快照。不支持在RAID配置的btrfs上使用swap文件。

没有问题啊。

1 个赞

理论上8G以上内存都没有必要设置swap,但是系统休眠和唤醒必须用这个。如果你在电源管理中把休眠/睡眠等关闭就可以不要。

别管他多大内存,你都设置4GB大小的交换文件。注意不是单独的交换分区,是在/根分区里设置交换文件。目的只有一个,就是防止休眠需要把内存里的资源临时写入硬盘,等你唤醒系统又把数据从交换文件里写入内存。

4GB足够了,多了浪费,小了可能不够用。设置交换文件你可以任何时候随时更改交换文件的大小,比单独的交换分区更灵活。

来源请求?

不写入硬盘那还能写入哪里?

需要多少完全取决于个人需求才对。

昨晚刷到一个资深运维工程师说服务器再大的内存也分一个4G的swap,防止内存溢出。桌面可分可不分

不,这个(buffer overflow)真防不了。能延缓的那个叫「内存耗尽」(out of memory)。

也只是延缓,不过可以给处理内存耗尽的工具运行的机会。内核自己的OOM Killer太保守了。

那我猜意思是,桌面遇到内存耗尽的问题要么等,要么重启算了。

btrfs创建swap的子卷

可以创建swap文件。

8g—不用另设吧?