我刚刚将我的操作系统从 Ubuntu 16.04LTS 升级到 Ubuntu 18.04LTS,然后升级到 Ubuntu 20.04 LTS,因为我正在尝试使用 GPU 来运行神经网络。我升级了操作系统,以便能够安装最新的 nvidia 驱动程序。我有一张 Nvidia Geforce GTX 1650 GPU 卡。在 Ubuntu 18 中,我安装了 nvidia 驱动程序 430,当操作系统升级到 Ubuntu 20.04 时,nvidia 驱动程序自动更新到最新版本 525,这些是官方 nvidia 驱动程序网站为我的卡推荐的版本,链接:https://www.nvidia.com/download/driverResults.aspx/199656/en-us/
当有一些进程占用大量 RAM(例如播放视频、从 Firefox 加载大量数据或尝试运行神经网络)时,我的计算机开始变慢,鼠标指针开始变得不稳定,GPU 温度升至 95°C,gpu-util 升至 100%(运行命令 nvidia-smi) 冻结之前 nvidia-smi 命令的输出 然后整个系统进入深度冻结状态,鼠标和键盘停止响应,音频进入循环状态。没有办法将其从冻结状态中唤醒,只能按电源按钮进行硬重置。
我看到这个版本的 Ubuntu 中有很多与此问题相关的类似问题: 如何找出 Ubuntu 20.04 冻结的原因? Ubuntu 20.04 LTS 随机冻结 - 怀疑是 Nvidia Ubuntu 20.04 随机冻结 Ubuntu 20.04 随机冻结 完全冻结 - Ubuntu 20.04,可能是 AMD 驱动程序的问题
在大多数问题中,问题与 BIOS 版本有关,但我在一些帖子中看到交换内存的值为 2GB 或 4GB,而当我检查我的内存时,它是 976Mb... 我不知道我的问题是否与交换内存有关??我对 Ubuntu 和驱动程序的了解非常有限。如果有人能帮忙,我将不胜感激,这真是令人沮丧和漫长。
这里有一些有用的信息
free -h
total used free shared buff/cache available
Mem: 15Gi 2,8Gi 10Gi 36Mi 2,2Gi 12Gi
Swap: 976Mi 0B 976Mi
sysctl vm.swappiness
结果:
vm.swappiness = 60
sudo lshw -C memory
结果:
PCI (sysfs)
*-firmware
description: BIOS
vendor: American Megatrends Inc.
physical id: 1
version: E16S3IMS.108
date: 11/18/2019
size: 64KiB
capacity: 16MiB
capabilities: pci upgrade shadowing cdboot bootselect edd int13floppy1200 int13floppy720 int13floppy2880 int5printscreen int9keyboard int14serial int17printer acpi usb biosbootspecification uefi
*-memory
description: System Memory
physical id: 3b
slot: System board or motherboard
size: 16GiB
*-bank:0
description: SODIMM DDR4 Synchronous 2667 MHz (0,4 ns)
product: M471A2K43CB1-CTD
vendor: Samsung
physical id: 0
serial: 36BD8D3D
slot: ChannelA-DIMM0
size: 16GiB
width: 64 bits
clock: 2667MHz (0.4ns)
*-bank:1
description: [empty]
physical id: 1
slot: ChannelB-DIMM0
*-cache:0
description: L1 cache
physical id: 45
slot: L1 Cache
size: 384KiB
capacity: 384KiB
capabilities: synchronous internal write-back unified
configuration: level=1
*-cache:1
description: L2 cache
physical id: 46
slot: L2 Cache
size: 1536KiB
capacity: 1536KiB
capabilities: synchronous internal write-back unified
configuration: level=2
*-cache:2
description: L3 cache
physical id: 47
slot: L3 Cache
size: 12MiB
capacity: 12MiB
capabilities: synchronous internal write-back unified
configuration: level=3
*-memory UNCLAIMED
description: RAM memory
product: Intel Corporation
vendor: Intel Corporation
physical id: 14.2
bus info: pci@0000:00:14.2
version: 00
width: 64 bits
clock: 33MHz (30.3ns)
capabilities: pm cap_list
configuration: latency=0
resources: memory:d5418000-d5419fff memory:d541d000-d541dfff
在冻结之前和增加交换内存之后的 htop 输出: 顶部
答案1
根据 的输出free -h
,您的交换文件已满(0 个可用空间)。Linux 看到了您的可用交换空间并在其中放入了一些缓存/共享内存,然后就结束了,但没有意识到当 2.8GB 的物理内存填满时,这会导致您的系统崩溃。
快速免费修复:增加交换大小。我的系统有 8GB RAM,因此我使用 24GB 的交换,但 25GB 以上的交换应该对你来说就足够了(一般的经验法则是交换应该是物理 RAM 大小的 2 倍,但如果将来遇到问题,你可以增加交换大小)。
价格更贵,但体验更好:当 Linux 开始使用交换文件时,事情通常会开始变得慢的。我的意思是,慢的有点慢。光标滞后,在浏览器选项卡上等待超过 15 秒,除非您将交换保持在某种价值数千美元的 NVMe 驱动器上,否则这是一场噩梦。所以我建议只是下载购买更多 RAM 以获得最佳性能。根据 的输出,您有一个可用的 RAM 插槽sudo lshw -C memory
,所以这不会成为问题。