我有一个运行 Ubuntu 16.04、64 GB RAM 的 AWS ec2 实例,并配置了一个 8GB 的交换文件。在每晚将备份数据从该实例的 EBS 卷同步到 S3 存储桶的批处理过程中,交换内存几乎被 100% 使用,但主内存仍然有 10-15 GB 范围内的充足可用空间。
这是交换默认值:
$ cat /proc/sys/vm/swappiness
60
Run Code Online (Sandbox Code Playgroud)
令人担忧吗?如果是,我应该通过使用更大的交换文件来添加更多交换空间还是选择交换分区?
尽管有足够的 RAM,但在夜间批处理作业后您会看到大量交换使用,这一观察结果并不令人担忧。这尤其不用担心,因为它发生在晚上,没有用户在电脑前。因此,您的用户体验不会受到这种交换的影响。就目前而言,您的特定批处理过程可能会以最高的效率和速度执行。
只有当您在那段时间坐在计算机前执行其他任务时,这种高交换使用率才会引起实际问题。交换的高倾向有时会导致用户界面的响应略有延迟,因为应用程序的某些 RAM 需要在需要时从交换中检索。较低的交换趋势将降低软件被交换以及您遇到延迟的可能性。您会认为这是更快速的性能,即系统在整个过程中即时响应,但代价是其他进程的“呼吸空间”较少,因为您一直占用 RA,即使对于您不再立即需要的进程也是如此。