我有大量的Fortran源代码(WRF)要编译。
每次我编译代码时,系统都会卡住。为了诊断这个问题,我在Ubuntu的系统监视器中看到了内存性能,编译占用了整个RAM。然后它也开始吃交换记忆。我的笔记本电脑有4GB内存。我把它扩展到了8GB内存。我创建了一个12 GB的交换分区。但是,一旦我的交换分区利用率达到4GB。系统挂起。为什么我的整个交换分区没有被使用(见下面)?

发布于 2016-06-01 15:30:56
为什么要让交换使用率更高呢?
对交换区的读/写比读/写RAM慢1000倍。
系统可能不是挂着的,只是它忙着来回交换东西,看起来就像挂了一样。
@phihag在评论中说:
最有可能的是,当交换达到4GB时,这恰好发生在用户界面的某些部分被交换掉的时候。例如,可以是处理Ctrl+C的代码、键盘布局处理程序、显示终端输出的代码、终端的数据缓冲区、绘制图片的X服务器的数据缓冲区等。如果您等待几个小时,或者您的交换空间已被填满,或者在各个层处理Ctrl+C所需的所有数据和代码最终都会导致您的Fortran进程死亡。
我建议再多拿些内存。它将大大加快您的编译速度。现在它很便宜,~16 60 60美元。
发布于 2016-06-01 17:23:15
使用过多的swap对您的系统有害。更多的交换意味着更多的滞后。Android已经指出了为什么你不想使用更多的交换。但是,有一种方法可以配置系统使用交换分区的频率。它由一个名为swappiness的设置控制。您将在此链接中找到关于修改替换性的详细指南。
我不建议你增加交换。甚至不能使用12‘t的交换分区。一般规则是交换应该是主内存的一半。对你来说是2GB。
https://askubuntu.com/questions/780412
复制相似问题