为进程分配较少的内存,以将 6.8 GB 的数据集加载到在 8 GB 机器上运行的 R 中

为进程分配较少的内存,以将 6.8 GB 的数据集加载到在 8 GB 机器上运行的 R 中

我的空闲系统(64 位 Ubuntu GNOME 15.10)在重启后使用了大约 2.5 GB 的 RAM,也就是说,我没有启动任何正在运行的程序。我安装的所有应用程序都不会在启动时启动。我可以安全地终止哪些系统进程或分配更少的内存,以便节省 8 GB 内存中的大约 7 GB R

答案1

重启后立即启动终端并发出命令

free -m

然后查看第二行的值(-/+ 缓冲区/缓存:)。在第二列(已用)下,您将看到系统的实际 RAM 消耗。

答案2

您可能会发现大多数正在使用的内存都在缓冲区缓存中。Linux 的默认配置是在内存可用时将文件数据缓存在内存中。当内存压力增加(即更多应用程序需要内存)时,如果缓存中的数据不是脏的,则按顺序丢弃缓存中的数据;如果缓存中的数据是脏的,则将其刷新(写入)到磁盘。

计算应用程序正在使用的剩余内存有点棘手,因为应用程序在使用共享库和共享内存映射时会共享内存。您可以使用“smemstat”等工具查看进程正在使用的内存量:

sudo apt-get install smemstat
smemstat

USS 列报告唯一集大小(非共享内存),PSS 列报告比例集大小(共享内存比例),RSS 列报告每个进程使用的驻留集大小(非交换物理内存)。

/proc/meminfo 文件还可用于查看内存的利用情况,使用:

cat /proc/meminfo

有关所有字段的信息,请参阅有关 /proc 接口的 Linux 内核文档

如果您的应用程序需要大量内存,内核将从其他进程中调出或删除未使用的页面,因此您可能不需要终止进程来为您的应用程序提供所需的内存。只要您有足够的物理内存可供应用程序 + 内核 + 其他正在运行的进程的活动页面使用,您就应该看到系统运行而没有太多的交换活动。您可以使用 vmstat 等工具查看交换入 (si) 和交换出 (so) 活动以仔细检查这一点:

vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0  45324  54252 147664 2897152    1    1    71    82   27  134  9  2 89  0  0
 3  0  45324  49924 147664 2902744    0    0   108     0 1570 7570 29  2 69  0  0

相关内容