我的Debian拉伸系统有很多内存。目前,它在SSD上使用一个加密的交换分区,但在正常情况下,我从来不期望内存不足会导致它被使用。
但是,根据Snakedoc的评论,完全关闭交换是个坏主意:
请注意,完全禁用交换决不是“安全的”。即使对于具有96+ GB的ram的系统,运行至少512 GB的交换是一个很好的安全措施。它让您的系统有时间杀死不必要的进程,如果有东西运行失控,并意外地吞噬了所有的内存。禁用交换的替代方案是内核恐慌。如何安全地永久关闭交换空间并恢复空间?(关于Debian Jessie)
因此,我想我可以保留一些内存,比如0.5G的内存磁盘,并将其用作交换文件,从而保存对SSD的写入。
我该怎么做?因为什么原因这是个坏主意吗?
发布于 2017-04-22 18:07:48
我不认为它的原因是稳定,它是一个普遍的误解。如果系统ram + swap已满,则实际上会发现与不交换相同的症状:
唯一的区别是没有交换,这些症状会突然发生,而对于交换,它们只会在交换完成之后发生。因此,在系统开始完全没有响应之前,您的延迟时间要大得多。
这是第一个原因,为什么有交换是有用的。
第二个问题不太为人所知,但实际上更重要的是:
一般来说,交换并不会减慢机器的速度,它会加速计算机的运行,即使在内存远远不够的情况下也是如此。
其原因如下:您的进程实际上没有使用RAM的系统是什么?它们用于缓存硬盘,从而使系统运行得更快。
如果您有交换,您基本上允许您的系统交换非常罕见的内存页,并将它们的空间用于磁盘缓存。它们发生的速度有多快,这取决于您的VM设置和启发式,但它们确实很好(据我所知,linux在这个意义上是最好的)。
如果您的硬盘在SSD上,那么并不会影响这两个参数(当然,拥有更快、更零的搜索时间磁盘会加速一切)。
我通常对交换分区使用旧的金科玉律:我更多地使用交换2x作为我的RAM。这是为了避免交换碎片(交换文件上的块可以像文件系统上的文件那样碎片)。在您的情况下,您有大量的RAM,但昂贵的硬盘零查找时间,交换碎片不是一个问题,因此,也许也较少的就足够了。我不知道,你有多少个SSD,可能是你的RAM站点的1倍甚至0.5倍就足够了。
在我看来,这个“至少有5.12亿交换”的建议是不好的,您使用的交换数量必须取决于您的系统参数(磁盘成本、RAM数量、磁盘数量、硬盘查找时间等)。这512米不是一个“黄金法则”,它是一个“神奇的数字”,这是毫无意义的,如果我们使用它的一般。
发布于 2019-02-25 15:16:06
在SSD系统上使用HDD交换是个坏主意。它不仅速度慢,访问时间长得多,而且比现代的SSD耗电量大得多,也可能不那么可靠。现在SSD有5年的保修期,即使你每天给它写几百个GBs,也可以轻松地维持8-10年。
但是使用兹拉姆会更好,可能与SSD上的一个小型备份交换分区一起使用。各种Linux发行版以及ChromeOS和Android都已经默认启用zram多年了。在Android系统上,甚至没有默认的常规交换。就连现在的视窗和macOS都在进行交换之前使用压缩内存。
由于CPU可以比HDD更快地解压缩数据,因此一旦系统开始交换,您就可以清楚地感受到系统响应能力。区别并不是SSD固有的,而是根据这里的基准结果 zram,使用默认的lzo算法似乎更快。您可以很容易地更改为lz4算法,它是压缩比稍低的比伊索快近5倍。
还有zswap
,它使用不同的机制,但仍然将压缩数据存储在内存中
发布于 2017-04-22 21:11:17
给出@peterh的答案,一个很好的解决方案可能是将任何旧的HDD插入到机器中,并将其用作划痕空间,包括交换空间。这样,所有内存都可以用于系统,甚至最后0.5G。一台笔记本电脑硬盘可能比3.5英寸的驱动器更节能。
https://unix.stackexchange.com/questions/360654
复制相似问题