我有一台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
是的,无需交换即可安全运行。但这是错误的问题。您需要问自己的问题是:
我的模拟使用超过 ~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 驱动器后。
如果他们确实使用了更多内存,那么下一个问题是“我是否希望它们在 RAM 耗尽时崩溃,或者我是否希望它们继续运行但速度较慢?”
如果你想让它们崩溃,那就不要费心交换。
如果您不想让它们因内存不足错误而崩溃,那么请估计它们可能超出您的实际 RAM 的量,并添加相应数量的交换空间。
另一件需要考虑的事情是“交换所使用的磁盘空间实际值多少钱”?在至少有 1 TB 或 2 TB 磁盘空间的现代系统上,非常少——不到一美分。与此相比,SIM 卡因内存不足错误而崩溃并必须再次运行所付出的成本(时间、金钱或烦恼)。交换很有用,拥有它但不需要它比需要它但没有它要好。