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矩阵转换为向量和编写并行代码方面没有成功。所以我想使用虚拟内存,因为我需要完成工作;费率无所谓。
伪代码 …
我正在用 zram 测试我的系统,我需要一个脚本来使用尽可能多的内存。这个脚本应该用随机的东西填满我的内存,而不仅仅是零。
我想在 U 盘上安装 Ubuntu,我可以插入(几乎)任何计算机并从中启动,并且我可以(几乎)正常使用,就好像它安装在该计算机上一样。我还想在上面有一个数据分区,(几乎)任何计算机都可以使用它,主要是为了存储一些便携式应用程序,以防万一。
我主要关心的是增加驱动器的使用寿命,但又不会让它太不稳定。
为此,我必须/etc/fstab为我的分区选择正确的选项。目前,我正在考虑这些:
/: ext4, defaults,lazytime,commit=60,errors=remount-ro/media/data:FAT32, defaults,lazytime,check=strict所以lazytime应该比经常提出的noatime或默认的更好relatime,因为据我所知,它适用于创建、访问和修改时间,它符合 POSIX(与 相反relatime),并且它通过在 RAM 中存储时间来减少写入周期的数量并时不时地写下它们。
结合commit=60,它应该减少写入足以补偿ext4的日志,我想保持一个稳定的系统。
你认为这些选项足够好吗?您是否看到我可以用来减少写入但保持系统稳定的其他选项?
我目前的设置: