Ubuntu 13.10 的发行说明提到它包含 Linux 3.11,它支持称为 zswap 的东西:
Zswap 是用于交换页面的轻量级后写式压缩缓存。它获取正在换出的页面,并尝试将它们压缩到动态分配的基于 RAM 的内存池中。如果此过程成功,则对交换设备的回写将被推迟,并且在许多情况下完全避免。这导致正在交换的系统的 I/O 显着减少和性能提升
这听起来很酷。我怎样才能试一试?
情况:修复Out of MemoryUbuntu 的 Matlab 中的错误
目标:在外部 HDD/SSD 上分配一些虚拟内存和/或交换;读/写从 20 GBps 减少到 0.1 GBps,没关系!
术语:这里的交换和虚拟内存
不,交换和虚拟内存是完全不同的。例如,内存映射 1GB 文件使用额外的 1GB 虚拟内存,但交换的使用没有变化。交换是一种后备存储形式。虚拟内存的许多用途与后备存储无关。(并且存在具有虚拟内存但没有交换的系统以及具有交换但没有虚拟内存的系统。)
消费硬件是有限的,所以我需要使用更多的虚拟内存和/或与我的外部硬盘交换。Matlab 说的是交换内存(TODO 不包括虚拟内存?)
Linux 系统 — 使用
mkswap和swapon命令更改交换空间。
系统特点
你可以看到你有多少 swapon -s
Filename Type Size Used Priority
/dev/sda3 partition 8326140 0 -1
Run Code Online (Sandbox Code Playgroud)Matlab 的配置
% /sf/answers/2517972831/
com.mathworks.services.Prefs.setIntegerPref('JavaMemHeapMax', 2048); % MB
% TODO cannot find ways how to put Matlab use /dev/sda3
Run Code Online (Sandbox Code Playgroud)所以你看到我的 Matlab 没有使用它。我Out of Memory在 Matlab 中收到大矩阵的错误。我在将reshape矩阵转换为向量和编写并行代码方面没有成功。所以我想使用虚拟内存,因为我需要完成工作;费率无所谓。
伪代码 …