我的计算机上有64 GB的RAM和240 GB的SSD,将用于内存密集型计算(机器学习,数据挖掘等)。我在Internet上发现的大多数建议都是大约2-4-8 GB RAM计算机,它们建议RAM交换分区的大小为2倍(即128 GB)。
制作128 GB交换分区是否合理?制作一个巨大的交换分区有什么好处?
如果物理RAM用完了,我是否理解正确:
- 如果没有交换,则会出现“内存不足”错误
- 如果我确实进行了交换,则某些RAM页面将被复制到交换分区,并且程序将继续运行(尽管速度较慢)。
有人说在SSD上进行交换是个坏主意,因为它的读写周期有限。使用交换功能将以多快的速度耗尽SSD的读/写周期(据我所知,大约有50000个写IOPS)?
我正在使用Linux(Ubuntu 14.04(Trusty Tahr))。
现在应该设置一个16 GB的交换空间,因为它应该足够确定(例如,RedHat建议使用4 GB),而16 GB的磁盘空间实际上并不重要。
discard
在SSD上。另外(在下面的答案中提到了这一点),请不要忘记可以使用文件而不是分区来进行更轻松的管理(并且不会因碎片等原因而影响SSD的性能)。
mmap
分配工作集页面,而不是显式地依赖交换。这样您的交换量将恰好是您过程所需的量。