永久删除具有大内存的设备中的交换是否安全?

永久删除具有大内存的设备中的交换是否安全?

我有一台128G内存的台式机。这是我不运行计算量大的脚本时的典型内存使用情况:

sam@debian:~$ free -ht --si
               total        used        free      shared  buff/cache   available
Mem:            128G        3.3G         93G        101M         31G        124G
Swap:           975M          0B        975M
Total:          129G        3.3G         94G

即使我运行模拟,内存使用率也不会超过 75%。所以我swap一开始就质疑是否需要1G分区。当我安装时,Debian我使用了内置Use entire disk and set up encrypted LVM选项,它自动为swap.如果这样做安全的话,我怎样才能将其移除并接管debian--vg-root该空间?下面是我的分区布局。

sam@debian:~$ lsblk -a
NAME                MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
loop0                 7:0    0     0B  0 loop  
loop1                 7:1    0     0B  0 loop  
loop2                 7:2    0     0B  0 loop  
loop3                 7:3    0     0B  0 loop  
loop4                 7:4    0     0B  0 loop  
loop5                 7:5    0     0B  0 loop  
loop6                 7:6    0     0B  0 loop  
loop7                 7:7    0     0B  0 loop  
nvme0n1             259:0    0 931.5G  0 disk  
├─nvme0n1p1         259:1    0   512M  0 part  /boot/efi
├─nvme0n1p2         259:2    0   488M  0 part  /boot
└─nvme0n1p3         259:3    0 930.5G  0 part  
  └─nvme0n1p3_crypt 254:0    0 930.5G  0 crypt 
    ├─debian--vg-root   254:1    0 929.5G  0 lvm   /
    └─debian--vg-swap_1 254:2    0   976M  0 lvm   [SWAP]

答案1

是的,无需交换即可安全运行。但这是错误的问题。您需要问自己的问题是:

  1. 我的模拟使用超过 ~128GB RAM 的可能性有多大?

    如果答案是“从不”、“极不可能”或类似的,那么你就不需要交换。您说您的模拟人生从未使用超过 75% 的可用 RAM,所以这可能就是答案。

    注意:如果您在运行您的模拟人生的同时正在运行其他需要大量 RAM 的应用程序(例如 firefox 或 chromium),那么请考虑到这一点 - 如果它们用完了,比如说 30GB(如果您已经使用过,则不太可能)打开了数百个窗口和选项卡)并且您不想在运行 sim 时退出它们,那么可用交换将允许内核将它们交换出来并为您的 sim 释放 RAM。

    例如,在我的 64GB 系统上,firefox 当前使用 21GB RAM,Chromium 使用另外 8.5GB,而 Steam 使用大约 3GB,只是在后台闲置。除此之外,他们总共使用了大约 2GB 的交换空间。如果我最近运行了另一个耗内存的程序,它们的使用量就会被交换掉,但我没有运行,而且我仍然有大约 20GB 的可用空间。

    我总共有 90GB 的可用交换空间,目前使用了大约 6.5GB(包括 Firefox 和 chromium 使用的 2GB)——这是 6.5GB 的空闲/未使用的额外内存,可用于需要它的程序。我的交换空间包含 NVME 驱动器上的两个 4GB 分区、NVME zfs 池上的另一个 16GB ZVOL(添加是因为 8GB 交换空间不够)以及 HDD zpool 上的 64GB ZVOL(添加是因为使用了 16TB 中的 64GB)在该池中可以忽略不计)。交换优先级设置为首先使用分区,然后是 NVME ZVOL,最后是 HDD ZVOL。顺便说一句,我的 NVME 池上只有 16GB ZVOL 用于交换的原因是该池只有 424GB - 但如果它是 1TB 或更多,我会将所有 ZVOL 交换空间放在上面,可能是 128GB。这可以等到我升级 NVME 驱动器后。

  2. 如果他们确实使用了更多内存,那么下一个问题是“我是否希望它们在 RAM 耗尽时崩溃,或者我是否希望它们继续运行但速度较慢?”

    如果你想让它们崩溃,那就不要费心交换。

    如果您不想让它们因内存不足错误而崩溃,那么请估计它们可能超出您的实际 RAM 的量,并添加相应数量的交换空间。

  3. 另一件需要考虑的事情是“交换所使用的磁盘空间实际值多少钱”?在至少有 1 TB 或 2 TB 磁盘空间的现代系统上,非常少——不到一美分。与此相比,SIM 卡因内存不足错误而崩溃并必须再次运行所付出的成本(时间、金钱或烦恼)。交换很有用,拥有它但不需要它比需要它但没有它要好。

相关内容