每次我在 Simulink 中编译模型时,“OS”GUI 的 GUI 元素(大致是 KDE Plasma 元素)就会开始严重滞后,导致计算机无法使用。滞后会持续到操作系统重新启动为止。由于我无法访问注销部分,因此我不得不创建一个 bash 脚本,从终端重新启动计算机。为此,我已经忍受了好几个月。我已经将整个操作系统彻底改造为 22.04,添加了 HWE 和最新的内核 6.5.0,滞后仍然存在。我已经执行了热量监控、监控ps aux
、监控free -h
、监控top
。使用监控了空闲 GPU 内存nvidia-smi
。按 CPU 使用率对进程进行排序。我没有从这些中检测到任何问题。我束手无策了。
xpswhite@machine:~$ uname -a
Linux X.X.X 6.5.0-25-generic #25~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue Feb 20 16:09:15 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
xpswhite@machine:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.4 LTS
Release: 22.04
Codename: jammy
xpswhite@machine:~$ hwe-support-status --verbose
Your Hardware Enablement Stack (HWE) is supported until April 2027.
xpswhite@machine:~$ dkms status
nvidia/535.161.07, 5.15.0-100-generic, x86_64: installed
nvidia/535.161.07, 5.15.0-97-generic, x86_64: installed
nvidia/535.161.07, 6.5.0-25-generic, x86_64: installed
xpswhite@machine:~$ kf5-config --version
Qt: 5.15.3
KDE Frameworks: 5.104.0
kf5-config: 1.0
xpswhite@machine:~$ nvidia-smi
Tue Mar 12 20:59:48 2024
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.161.07 Driver Version: 535.161.07 CUDA Version: 12.2 |
|-----------------------------------------+----------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 NVIDIA GeForce RTX 3070 Off | 00000000:01:00.0 On | N/A |
| 0% 34C P8 9W / 220W | 409MiB / 8192MiB | 0% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
| 0 N/A N/A 1276 G /usr/lib/xorg/Xorg 165MiB |
| 0 N/A N/A 2068 G /usr/bin/kwin_x11 3MiB |
| 0 N/A N/A 2183 G /usr/bin/plasmashell 78MiB |
| 0 N/A N/A 2610 G ...irefox/3941/usr/lib/firefox/firefox 143MiB |
+---------------------------------------------------------------------------------------+
答案1
最有可能的是,在编译模型时,大多数 RAM 都被用完了,并且计算机正在交换系统程序,这很可能不是 Nvidia 的问题。但由于交换速度很慢,因此会导致问题。此外,即使您使用完 Simulink,操作系统也不会将 SWAP 的内容移动到 RAM,因此冻结会持续到计算机重新启动为止。
如果是交换的情况,那么使用 zram-swap 可能是一种非常有效的解决方法。zram swap 压缩内存,并将其存储到 RAM 本身中(这比 SSD 还要快得多)。
首先,禁用交换。很可能您没有交换分区,但 Ubuntu 会自动创建交换文件。要禁用它,请打开/etc/fstab
,然后注释掉 swapfile 行。
运行sudo nano /etc/fstab
,并在以 开头的行开头添加#
(注释掉)/swapfile
注释掉后,该行应如下所示
#/swapfile none swap sw 0 0
然后按ctrl+x保存文件,然后按y确认保存。
要设置 zram-swap,请运行以下命令。
sudo apt install git
git clone https://github.com/foundObjects/zram-swap.git
cd zram-swap && sudo ./install.sh
之后重新启动,问题就消失了。