我在 live USB 上尝试 Peppermint OS(基于 Lubuntu 的发行版)。我通过命令检查内存
free -h
结果是
peppermint@peppermint ~ $ free -h
total used free shared buff/cache available
Mem: 3.8G 1.0G 1.0G 866M 1.8G 1.8G
Swap: 5.7G 51M 5.7G
我的usb是4G的,我的内存是4G的。
为什么swap是5.7G?在其他基于 ubuntu 的发行版中是否会发生这种情况?
据我了解,在 live USB 上尝试 ubuntu 发行版不会在硬盘上创建交换,所以我考虑了 3 种情况:
我之前已经创建了4G的swap(创建双启动时),并且使用了这个swap,但是这里的swap是5.7G
在usb上创建了另一个swap,但我的usb只有4G;那为什么swap是5.7G呢?
在usb上创建了1.7G的swap,5.7G是两个swap合并的结果。但我检查我的USB有2.5G空闲,其中的linux iso约为1.3G,所以我的USB上不能有1.7G的交换
正如 sourcejedi 所建议的,结果如下cat /proc/swaps
:
peppermint@peppermint ~ $ cat /proc/swaps
Filename Type Size Used Priority
/dev/sda5 partition 3998716 0 -2
/dev/zram0 partition 1006892 26320 5
/dev/zram1 partition 1006892 26044 5
答案1
因此它已检测到您的 4GB(十进制)交换分区,并自动启用它。我认为这种情况相当普遍。它可能来自常见的 Ubuntu 代码。
它还使用 2 x 1GB
zram
交换空间。交换到的数据zram
被压缩并存储在 RAM 中。这对于低内存系统特别有用。 Android 可以使用类似(相同?)的方法,低内存系统上的 Windows 10 也是如此。
这是 Peppermint 包含 Ubuntu 软件包的结果zram-config
。据我所知,原来的Ubuntu Desktopzram-config
默认是不安装的。
您可以在 中看到代码/usr/bin/init-zram-swapping
。目前,它为每个 CPU 创建一个 zram 设备(用于并行压缩或解压缩)。
# Calculate memory to use for zram (1/2 of ram)
totalmem=`LC_ALL=C free | grep -e "^Mem:" | sed -e 's/^Mem: *//' -e 's/ *.*//'`
mem=$(((totalmem / 2 / ${NRDEVICES}) * 1024))
# initialize the devices
for i in $(seq ${NRDEVICES}); do
DEVNUMBER=$((i - 1))
echo $mem > /sys/block/zram${DEVNUMBER}/disksize
mkswap /dev/zram${DEVNUMBER}
swapon -p 5 /dev/zram${DEVNUMBER}
done