我按照 webupd8.org 上的描述安装了zRam。我是从终端安装的。这就是我必须做的,还是我必须做一些配置之类的?zram-enabler 是自己做所有事情还是我必须设置一些参数?
编辑:确切地说,现在有zram-config
. 这是一个新贵的工作,压缩多达一半的内存分布在 $(CPU 内核数)交换设备上。它并不总是在启动时启动,而是发布sudo service zram-config start
作品。
我/etc/initramfs-tools/initramfs.conf
按照这里的描述启用了 compcache="256 M" (由我:P)。这 - 我相信 - 创建/dev/ramzswap0
但它从未被启用为交换。它仅在mkswap
&&之后有效swapon
。
然后是创建/dev/zram
. 是别的吗?它的工作方式相同,但/dev/ramzswap
由模块 ramzswap 创建。
在一天结束时,我想在 ram 中进行压缩交换并使用两者中更好的一个,为此我需要知道如何以非黑客的方式永久启用它。这是怎么做的?
我清醒写ramzswap这里,但事情已经在纳蒂改变。您仍然可以在 initramfs.conf 中启用 ramzswap 但它不会被激活。
PS:我扫描了 /lib 和 /etc 中的所有 udev 规则,但没有发现任何有趣的内容。
Whenever initramfs is updated I get a message similar to this:
I: The initramfs will attempt to resume from /dev/zram1
I: (UUID=1d4b8573-7eee-43c9-a02a-10a65fc17b8a)
I: Set the RESUME variable to override this.
Run Code Online (Sandbox Code Playgroud)
但是,因为我所有的交换分区都是zram设备,所以我想禁用恢复。我怎样才能做到这一点?
我不完全了解 zram 的功能和潜在优势。
例如:一旦 zram 被激活,多少百分比的内存将专用于分页?
另一个问题:显然总内存大小是内存中交换文件的上限。一旦耗尽,系统是否会开始在常规交换分区(如果存在)上进行交换?
zram 的主要缺点是什么?
注意:我有 32GB 的物理内存和 20GB 的交换分区。我使用非常需要内存的程序,并且经常用完内存(top 命令显示物理和交换几乎已满,并且系统速度很慢)。
谢谢。
我用 .zram 安装了 zram sudo apt-get install zram-config
。之后它自动启动,当我验证cat /proc/swaps
它运行正常时
但是当我sudo echo 128M > /sys/block/zram0/disksize
以前像在文档中那样更改 zram 大小时,我总是得到bash: /sys/block/zram0/disksize: permission denied
即使当我关闭它sudo swapoff /dev/zram0
然后改变我仍然得到permission denied
那么如何更改 zram 大小呢?而且是disksize
它消耗的RAM空间,或只是最大zram磁盘大小?
我尝试在终端中使用以下命令安装 zRam:
sudo add-apt-repository ppa:shnatsel/zram
sudo apt-get update
sudo apt-get install zramswap-enabler
Run Code Online (Sandbox Code Playgroud)
但它会抛出以下错误消息,指出该包不可用:
E: Couldn't find package zramswap-enabler
Run Code Online (Sandbox Code Playgroud)
我尝试下载并安装 zramswap-enabler_0.2.1-0~12~oneiric1_all.deb 包,但在第二次重新启动后它停止工作。
运行时sudo modprobe zram
(或modinfo
就此而言)我收到以下错误:
modprobe: FATAL: Module zram not found in directory /lib/modules/4.13.0-21-generic
Run Code Online (Sandbox Code Playgroud)
zram 是否已从 Ubuntu 17.10 中删除?
Ubuntu 18,尝试zram
使用lz4
压缩。
尝试修改/usr/bin/init-zram-swapping
文件
#!/bin/sh
...........
...........
for i in $(seq ${NRDEVICES}); do
DEVNUMBER=$((i - 1))
echo $mem > /sys/block/zram${DEVNUMBER}/disksize
echo lz4 > /sys/block/zram${DEVNUMBER}/comp_algorithm # <= added this line
mkswap /dev/zram${DEVNUMBER}
swapon -p 5 /dev/zram${DEVNUMBER}
done
Run Code Online (Sandbox Code Playgroud)
但是,重启后zramctl
仍然显示我正在使用lzo
算法
NAME ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram3 lzo 466M 2.9M 614.2K 1M 4 [SWAP]
/dev/zram2 lzo 466M 2.9M 631.2K 1M 4 [SWAP]
/dev/zram1 lzo 466M 2.9M 536.1K 1020K 4 [SWAP]
/dev/zram0 lzo …
Run Code Online (Sandbox Code Playgroud) 我的机器有 24GB 可用 RAM,但我通常使用的远远少于 8GB。然而,有时我会处理大型数据文件,突然需要 40GB,并且在极少数情况下,我希望能够访问更多(最多 60GB)。这主要是使用numpy和Apache Arrow。
现在我有一个 20GB 的 SSD 交换文件,工作正常,但速度明显很慢。我想用 zRAM 替换它,假设我在 16GB 上进行双重压缩,即 32GB,加上“ram”中剩余的 8GB = 40GB。不过,理想情况下,有时我希望使用大于 40GB 的内存,并想知道不适合 zRAM 的内容是否有可能进一步溢出到“传统”SSD 交换文件或分区中。
这可行吗?显然我希望 zRAM 的优先级高于磁盘交换文件。
我有一个 zram 交换(和一个普通交换),但我不知道它来自哪里:
$ sudo blkid | grep zram
/dev/zram0: UUID="..." TYPE="swap"
$ lsmod | grep zram
zram 18642 1
$ cat $ cat /etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc nodev,noexec,nosuid 0 0
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
UUID=... / ext4 discard,noatime,errors=remount-ro 0 1
/dev/disk/by-uuid/... /mnt/data ext4 defaults,user,exec,errors=remount-ro 0 2
/dev/disk/by-uuid/... /mnt/media ext4 defaults,user,errors=remount-ro 0 2
UUID=... none swap sw 0 0
Run Code Online (Sandbox Code Playgroud)
zram
?这仅发生在我的一个系统上,两个系统都运行 Ubuntu 12.04 Alpha 2+。
如何启用 zram 并禁用交换分区?
如何使用 zram 而不是交换分区来获得一些速度和硬盘?
如何根据我的需要配置 zram?
为什么要做这些事情?
zram ×11
swap ×8
ram ×3
12.04 ×2
11.04 ×1
compression ×1
disk ×1
initramfs ×1
installation ×1
memory-usage ×1
permissions ×1