强制 Vagrant 使用 Swap 内存

Force Vagrant to use Swap memory

我有第一个os第一台带有 2+2 GB 内存的 alu iMac。我使用 Vagrant 模拟高级开发环境,为不同的工作分开。

当我只有一个 vagrant 进程 运行ning 在后台时,计算机变得非常慢,因为它总是内存不足。

问题是:我能否仅在交换内存上使用 vagrant(或任何应用程序)来 运行,以便为 os 和其他应用程序保留所有内存?

如果有解决办法,我该怎么做?

简短的回答是:不,进程不能运行完全交换。

进程必须将其数据保存在 RAM 中,CPU 才能对其进行操作,当不再有 space 可用时,不常用的数据将移出以交换 space在内存中加载所有内容。

您可以创建更大的交换 space 并使用 ulimit 来限制进程使用的内存量(即强制它们更早进入交换),但这并不能真正解决根问题您的问题 - 您几乎已达到 4GB 内存的极限。

请记住,使用交换 space 总是会产生性能问题,因为(即使使用 SSD)从磁盘读取比从内存读取慢得多。

如果不升级到更多内存,您可以:

  • 减少 vagrant box 分配的内存量;
  • 使用 OS X 的 Activity 监视器 识别并关闭任何未使用但仍在使用内存的 programs/processes。

但是,同样,这些只是权宜之计。

简单的回答是否定的。

控制交换必须在 VM 内完成,例如 Linux、echo 100 > /proc/sys/vm/swappiness 将交换策略设置为最积极的模式。请记住,您无法控制进程的位置 运行(物理内存 VS 交换)

但是,通过这样做,您的 host/guest 仍然会非常慢,因为您没有足够的物理内存。

最终的解决方案是为您的 iMAC 添加更多 RAM ;-D