情况:研究zram
虚拟内存压缩的效果(维基百科)关于内存的大小及其速度;当交换区不在 HDD/SSD 上时;zswap
如果您想在 HDD/SSD 上进行交换,请使用
动机:我对内存大小没有任何影响,但systemd
/... 的错误数量增加,即runit
压缩可能存在稳定性问题,尽管应避免分页 更多
代码
# http://askubuntu.com/a/800645/25388
modprobe zram
echo lz4 > /sys/block/zram0/comp_algorithm
echo 4G > /sys/block/zram0/disksize
mkswap --label zram0 /dev/zram0
swapon --priority 100 /dev/zram0
特征
命令
cat /sys/block/zram0/orig_data_size
给出4096
.RAM 已满且交换区已满。所以当总内存消耗达到20GB左右时计算结束,计算失败。
命令
swapon
基于cat /proc/swaps
NAME TYPE SIZE USED PRIO /dev/sda3 partition 8G 0B -1 /dev/zram0 partition 4G 0B 100
命令
free -m
total used free shared buff/cache available Mem: 7925 1390 5465 172 1069 6074 Swap: 12226 0 12226
有关 SSD 中当前内存使用情况的命令
df -k | grep sda2
,以及将其扩展为交换的可能性。Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda2 108299224 76880916 25893932 75% / % df -h /dev/sda2 104G 74G 25G 75% /
测试代码:任何占用大量内存的 Matlab 计算。
输出:矩阵的大小不会随着实现而增加。预期输出:内存大小增加。
系统:Linux Ubuntu 16.04 64 位
硬件:Macbook Air 2013-mid
答案1
我按照指示停止优化交换内存CAS,专注于其他事情。请注意cas的评论
最后,如果可能的话,应该避免交换。如果您可以升级系统的 RAM,那么就升级吧。如果您可以将内存消耗大的任务卸载到另一台机器上,那么就这样做。交换始终是最后的手段,因为它很慢。如果您需要经常运行大型 matlab 等作业,那么没有多少交换空间可以缓解等待其完成的挫败感和乏味(或者使您的机器在交换数据进出时可以交互使用)......这是为什么我建议构建一个可以通过 ssh 连接到的 Linux 盒子来运行大量占用内存的作业。