我有一台带有2 + 2 GB内存的首批alu iMac。我使用Vagrant来模拟高级开发环境,为不同的工作分开。
当我只有一个流浪汉进程在后台运行时,计算机变得很慢,因为它总是内存不足。
问题是:我可以使用vagrant(或任何应用程序)仅在交换内存上运行,因此它会为操作系统和其他应用程序留下所有内存吗?
如果有任何解决方案,我该怎么做?
答案 0 :(得分:1)
简短的回答是:不,进程无法完全在交换中运行。
进程必须将其数据存储在RAM中,以便CPU能够对其进行操作,当内存中没有可用空间可用于加载的所有内容时,不经常使用的数据会被移出到交换空间。
您可以创建一个更大的交换空间并使用ulimit
来限制进程使用的内存量(即强制它们更早地交换),但这并不能真正解决问题的根源 - 你几乎达到了4GB内存的极限。
请记住,使用交换空间始终会产生性能问题,因为(即使使用SSD)从磁盘读取的速度远远低于从内存中读取的速度。
如果没有升级到更多内存,你可以:
但是,这些只是一种止损解决方案。
答案 1 :(得分:1)
简单的答案是否定的。
控制swappiness必须在VM内完成,例如Linux,echo 100 > /proc/sys/vm/swappiness
将交换策略设置为最积极的模式。请记住,您无法控制进程的运行位置(物理内存VS交换)
然而,通过这样做,您的主机/访客仍然会很慢,因为您没有足够的物理内存。
最终的解决方案是为您的iMAC添加更多内存;-D