在不同的设备中使用两个交换文件的正确方法是什么?

在不同的设备中使用两个交换文件的正确方法是什么?

我在 jupyter lab 上运行一个 python 代码,它处理大量的数据框列表,我需要连接、计算平均值等。它消耗内存,我利用交换文件,因为内存大小不够。

我观察到的问题是,当内存使用量达到第一个交换文件的末尾时它就会崩溃。

看来我在这里遗漏了一些东西...我发现参考资料,使用两个交换文件是可能的这里这里这里。 和这个甚至说可能存在高达 29 个交换文件!

  • 我的第一个交换文件位于根目录(/swapfile)。
  • 我尝试的第二个交换文件位于 home ( ~/swapfile2)。“home”位于作为 挂载的辅助设备 (SSD) 上/home
  • 我的主设备(/)是 NVMe 设备(M.2 SSD)
  • 如果我停用/删除~/swapfile2,它可以正常工作(如果我没有达到最大内存+交换文件)
  • 在这两种情况下,我在系统监视器上都看到第一个交换文件的等效功能正在被毫无问题地使用。
  • 我没有看到任何错误消息,它只是崩溃,并且 jupyter lab/chrome 关闭。
  • 我的系统是 Ubuntu 22.04.2 LTS
  • 我检查了一下,优先级是第一个交换文件(在 M.2),这就是为什么我确信当第一个交换文件被完全使用时就会发生崩溃......

我知道速度的差异,尽管我的 SSD 空间更大,但我还是更愿意使用 NVMe 设备,至少在达到极限之前。不幸的是,我的 M.2 上没有更多可用空间来增加第一个交换文件。

此类交换文件是否要求位于类似的设备上(速度类似等)?使用两个交换文件的正确方法是什么?

先感谢您,

更新: 关于如何设置交换文件:

sudo fallocate -l 50g /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

同样适用于~/swapfile2

sudo fallocate -l 50g ~/swapfile2
sudo chmod 600 ~/swapfile2
sudo mkswap ~/swapfile2
sudo swapon ~/swapfile2
echo '~/swapfile2 none swap sw 0 0' | sudo tee -a /etc/fstab

我最初尝试过不重启。重启后,我看到第二个交换文件已停用,因此我编辑了/etc/fstab(sudo nano /etc/fstab),如所述这里。编辑 etc/fstab 后再次重启,问题仍然存在...

更新 2: 我现在已经设法在同一 NVMe 的辅助分区(同一设备包含具有系统根目录“/”的分区)上释放了一些空间。并在那里添加了一个交换文件进行测试。

sudo fallocate -l 50g /Data/swapfile2
sudo chmod 600 /Data/swapfile2
sudo mkswap /Data/swapfile2
sudo swapon /Data/swapfile2
echo '/Data/swapfile2 none swap sw 0 0' | sudo tee -a /etc/fstab

当两个交换文件位于同一 NVMe 设备的不同分区时,它工作正常。我遇到了麻烦,就在第二个交换文件位于 SSD SATA 中时。所以我有更多的理由认为它与速度差异有关......

所有分区和磁盘均格式化为 ext4。

有什么办法可以让它与 NVMe 设备上的一个(或两个)交换文件和 SSD SATA 上的另一个交换文件一起工作吗?

答案1

我希望您不要~/swapfile2在 中使用/etc/fstab,因为它~是 shell 快捷方式,请使用实际路径:/home/hamagust/swapfile2。此外,在删除交换文件之前,请务必使用swapoff命令。给系统时间以迁移交换文件。

相关内容