我有一台配备 4 GiB RAM 和 128 GiB SSD 的平板电脑,搭载的是 LUbuntu 18.04。
当内存使用率达到约3.9G时,系统挂了,只有鼠标指针移动,很卡,Ctrl+Alt+Fx无反应。
swapon
据报道为8 GiB:
$ sudo swapon --show
NAME TYPE SIZE USED PRIO
/dev/sda2 partition 8G 0B -2
$ sudo sysctl vm.swappiness
vm.swappiness = 60
$ uname -r
4.15.0-55-generic
为什么内存实际上没有交换?如何启用交换?
答案1
根据个人经验,在较新版本的 Ubuntu 中,交换文件可能比交换分区更实用。您可以尝试创建交换文件并禁用交换分区,看看效果如何。为此,请按照以下步骤操作:
创建交换文件(8 Gib):
sudo fallocate -l 8G /swapfile
授予文件正确的权限以限制不必要的访问:
sudo chmod 600 /swapfile
准备文件作为交换区域:
sudo mkswap /swapfile
激活交换文件:
sudo swapon /swapfile
停用交换分区:
sudo swapoff /dev/sda2
测试你的系统交换现在如何运作。
注意:(除了创建/swapfile
),对交换卷所做的这些更改是临时的,将在重启后清除。如果您希望使更改永久生效,
请编辑您的
/etc/fstab
文件sudo nano /etc/fstab
将此行添加到文件末尾
/swapfile swap swap defaults 0 0
例子:
/dev/sda2 none swap sw 0 0 /swapfile swap swap defaults 0 0
注释掉包含交换分区的行(/dev/sda2
#
) 在其前面添加例子:
# /dev/sda2 none swap sw 0 0 /swapfile swap swap defaults 0 0
Ctrl按+X然后Y保存更改Enter
fallocate
或者dd
:
谢谢至@heynnema在下面的评论部分提出这一担忧:
不,不要使用
fallocate
创建 /swapfile,而要使用dd
。在 AU 上搜索有关此内容的信息。
我认为人们担心的fallocate
是文件孔这些内容基本上是文件的一部分,其中包含空字符,并且未存储在磁盘上的任何数据块中。如果存在,则会导致交换文件无法使用。
为了解决这个担忧,让我们来看看fallocate
创建文件洞的概率及其后果。
事实证明:
fallocate
通常不会创建洞,除非操作已存在的文件并且--punch-hole
指定了选项。请阅读Ubuntu 手册页 - fallocatefallocate --length 8GiB swapfile
建议在 Ubuntu 手册页上创建交换文件,请阅读Ubuntu 手册页 - mkswap毕竟,如果创建的文件中有漏洞,
sudo swapon
就会抛出错误skipping - it appears to have holes.
,在这种我还没有遇到或听说过的罕见情况下,解决方案很简单。只需使用dd
上面步骤 1 中的创建文件并继续即可。请按如下方式操作:sudo dd if=/dev/zero of=/swapfile bs=1024 count=8388608
或@v_mil做到了:
sudo dd if=/dev/zero of=/swapfile bs=1048576 count=8192
简而言之,这种担心还不足以让人放弃使用所获得的速度fallocate
。