这个问题持续了一段时间,但感觉自从我从 18.04 升级到 20.04 后,它就变得极其频繁(而不是偶尔发生,而是几乎每天都发生)。
每当出现问题时 - 在我看来,这似乎是当 RAM 使用率升高时(我见过有人描述磁盘 I/O 的类似问题,但情况似乎并非如此) - 系统就会冻结。在最初的一分钟内,系统会急剧运转,我只有短暂的机会移动现在抖动的鼠标光标,快速关闭导致问题的浏览器选项卡或应用程序。如果我不这样做,此时系统几乎会永久冻结,顶部栏上的系统时钟停止更新,无论发生什么情况都不会解冻,我需要进行硬重置。
以前,当我在 Firefox 上打开太多标签时,这种情况经常发生,但我安装了一个标签限制器扩展来缓解这种情况。但它总是发生,当我在 GIMP 中处理较大的图像时,以及当我浏览一些具有无限滚动的网站(如 DeviantArt 重新设计或一些视频网站)时,这种情况就会发生(有时)。我刚刚在 GIMP 上处理像素艺术作品的半小时进度就丢失了。
这使得我的系统使用起来非常烦人。我不想这么说,但我的双启动 Windows 10 更稳定 - 这说明了一些问题,因为 W10 是我用过的最糟糕的操作系统。
这是一个 inxi -F 转储:
System:
Host: shino-ProLiant-ML310-G5p Kernel: 5.4.0-66-generic x86_64 bits: 64
Desktop: Gnome 3.36.4 Distro: Ubuntu 20.04.2 LTS (Focal Fossa)
Machine:
Type: Desktop System: HP product: ProLiant ML310 G5p v: N/A
serial: <superuser/root required>
Mobo: N/A model: N/A serial: N/A BIOS: HP v: W08 date: 10/25/2010
CPU:
Topology: Dual Core model: Intel Xeon E3120 bits: 64 type: MCP
L2 cache: 6144 KiB
Speed: 1995 MHz min/max: N/A Core speeds (MHz): 1: 1995 2: 1995
Graphics:
Device-1: AMD ES1000 driver: N/A
Device-2: NVIDIA G86 [Quadro NVS 290] driver: nvidia v: 340.108
Display: x11 server: X.Org 1.20.9 driver: nvidia
unloaded: fbdev,modesetting,nouveau,vesa resolution: 1440x900~75Hz
OpenGL: renderer: Quadro NVS 290/PCIe/SSE2 v: 3.3.0 NVIDIA 340.108
Audio:
Device-1: Generalplus type: USB driver: hid-generic,snd-usb-audio,usbhid
Sound Server: ALSA v: k5.4.0-66-generic
Network:
Device-1: Broadcom and subsidiaries NetXtreme BCM5715 Gigabit Ethernet
driver: tg3
IF: enp3s4f0 state: down mac: 9c:8e:99:35:15:80
Device-2: Broadcom and subsidiaries NetXtreme BCM5715 Gigabit Ethernet
driver: tg3
IF: enp3s4f1 state: up speed: 1000 Mbps duplex: full
mac: 9c:8e:99:35:15:81
Drives:
Local Storage: total: 1.82 TiB used: 594.46 GiB (31.9%)
ID-1: /dev/sda model: LOGICAL VOLUME size: 1.82 TiB
RAID:
Hardware-1: Hewlett-Packard Smart Array G6 controllers driver: hpsa
Partition:
ID-1: / size: 910.88 GiB used: 594.46 GiB (65.3%) fs: ext4 dev: /dev/sda5
Sensors:
System Temperatures: cpu: 40.0 C mobo: N/A gpu: nvidia temp: 68 C
Fan Speeds (RPM): N/A
Info:
Processes: 288 Uptime: 2h 17m Memory: 3.84 GiB used: 2.86 GiB (74.6%)
Shell: bash inxi: 3.0.38
答案1
从https://en.wikipedia.org/wiki/Memory_paging#Swappiness它指出:
Swappiness 是一个 Linux 内核参数,用于控制当内存分配请求无法从空闲内存中满足时,从运行时内存中换出页面(而不是从系统页面缓存中删除页面)的相对权重。Swappiness 可以设置为 0 到 200(含)之间的值。[18] 较低的值会导致内核倾向于从页面缓存中逐出页面,而较高的值会导致内核倾向于换出“冷”内存页面。默认值为 60;如果需要将冷页面换回(例如,与空闲的程序交互时),则将其设置得更高可能会导致高延迟,而将其设置得更低(甚至 0)可能会导致高延迟,因为需要再次读取已从缓存中逐出的文件,但程序会更灵敏。交换还会进一步降低 HDD 的速度,因为它涉及大量随机写入,而 SSD 没有这个问题。当然,默认值在大多数工作负载下都能很好地运行,但对于任何预期任务,桌面和交互系统可能需要降低设置,而批处理和交互性较差的系统可能需要增加设置。[19]
由于 Ubuntu 的默认值为vm.swappiness
,60
我建议使用较低的值,即10
,这样 RAM 中的非活动页面对交换的攻击性就会降低。
运行以下命令设置10
(如果 .conf 文件中尚未设置任何值):
echo "vm.swappiness = 10" | sudo tee -a /etc/sysctl.conf
如果该设置已存在,您可以复制并粘贴以下内容将值更改为10
:
sudo sed -i "s/$(awk '/vm.swappiness/ {print $0}' /etc/sysctl.conf)/vm.swappiness\ =\ 10/" /etc/sysctl.conf
然后激活更改:
sudo sysctl -p
您还可以尝试不同的值来查看哪个最适合您。
希望这可以帮助!