![当达到 RAM 限制时系统会冻结,不使用交换](https://linux22.com/image/939980/%E5%BD%93%E8%BE%BE%E5%88%B0%20RAM%20%E9%99%90%E5%88%B6%E6%97%B6%E7%B3%BB%E7%BB%9F%E4%BC%9A%E5%86%BB%E7%BB%93%EF%BC%8C%E4%B8%8D%E4%BD%BF%E7%94%A8%E4%BA%A4%E6%8D%A2.png)
我有一个 16GB RAM 的系统,每当我达到 RAM 的极限时,整个系统就会冻结,甚至鼠标光标也会开始抖动,直到完全不动。键盘、鼠标,什么都没有。所以我被迫进行强制关机,这可能对电子设备不利。我设置了一个 16GB 的交换区,它在每次free -m
进入时都显示正常top
,但使用率始终为 0。
total used free shared buff/cache available
Mem: 15960 5823 3915 704 6220 9104
Swap: 16383 0 16383
有什么想法为什么我的系统不想使用交换来避免彻底崩溃?
更多信息:
$ grep -i swap /etc/fstab
/swapfile none swap sw 0 0
$ sysctl vm.swappiness
vm.swappiness = 80
$ swapon -s
Filename Type Size Used Priority
/swapfile file 16777212 0 -2
$ ls -al /swapfile
-rw------- 1 root root 17179869184 Jan 16 2021 /swapfile
输出sudo lshw -C memory
:https://pastebin.com/TGbjiLdm
我曾尝试过将交换量从 10 变为 40 变为 60 变为 80,但似乎没有什么太大的区别。
此外,系统很少达到极限。只有当我使用 Kdenlive 编辑非常大的视频文件或运行 VirtualBox 等类似的东西时才会达到极限。我通常对此很谨慎,但有时我会意外达到 16GB 的阈值(未使用交换空间),然后我的系统就会崩溃。
答案1
交换
编辑/etc/fstab...
sudo -H gedit /etc/fstab
并编辑此行以删除制表符,并仅使用空格......
/swapfile none swap sw 0 0
减少你的/swapfile...它太大了......
笔记:错误使用rm
和dd
命令可能会导致数据丢失。建议复制/粘贴。
在里面terminal
...
sudo swapoff -a # turn off swap
sudo rm -i /swapfile # remove old /swapfile
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
sudo chmod 600 /swapfile # set proper file protections
sudo mkswap /swapfile # init /swapfile
sudo swapon /swapfile # turn on swap
free -h # confirm 16G RAM and 4G swap
sudo -H gedit /etc/fstab
使用或编辑 /etc/fstab sudo pico /etc/fstab
。
确认 /etc/fstab 中的此 /swapfile 行...并确认没有其他“交换”行...在此行中使用空格...确认没有制表符...
/swapfile none swap sw 0 0
reboot # reboot and verify operation
重置你的 vm.swappiness...
编辑/etc/sysctl.conf...
sudo -H gedit /etc/sysctl.conf
找到包含的行vm.swappiness=80
并将其更改为 =60。
保存文件。
sudo sysctl -p
BIOS
ThinkPenguin 小军鼓https://www.thinkpenguin.com/gnu-linux/snares-penguin-gnu-linux-notebook
您的 BIOS 版本非常老旧,为 1.03.06,发布日期为 2014 年 6 月 25 日。告诉我您的计算机或主板的具体品牌/型号,我们将检查是否有更新的 BIOS。
更新#1:
让我们检查您的文件系统...
- 以“试用 Ubuntu”模式启动 Ubuntu Live DVD/USB
terminal
按Ctrl+ Alt+打开窗口T- 类型
sudo fdisk -l
- 识别“Linux 文件系统”的 /dev/sdXX 设备名称
- 输入
sudo fsck -f /dev/sdXX
,替换sdXX
为您之前找到的数字 fsck
如果有错误则重复命令- 类型
reboot
更新 #2:
命令期间初始失败dd
。登录屏幕冻结。fsck
修复了一些错误。交换现已正常工作。BIOS 似乎比较旧,但还是最新的。启动到 Ubuntu Live DVD/USB 时运行正常。需要重新安装 Ubuntu。