Ubuntu зависает при резком увеличении использования оперативной памяти

Ubuntu зависает при резком увеличении использования оперативной памяти

Эта проблема сохранялась некоторое время, но, похоже, она стала возникать чрезвычайно часто (вместо того, чтобы время от времени возникать, почти каждый день) после того, как я обновился с версии 18.04 до 20.04.

Всякий раз, когда что-то происходит — мне кажется, когда использование оперативной памяти становится высоким (я видел, как люди описывали похожую проблему с дисковым вводом-выводом, но это, похоже, не так) — система на грани зависания. В течение первой минуты система будет просто резко дергаться, и у меня будет короткое окно возможности переместить теперь уже дергающийся курсор мыши, чтобы быстро закрыть вкладку браузера или приложение, которое вызывает проблему. Если я этого не сделаю, в этот момент система практически зависнет навсегда, системные часы на верхней панели перестанут обновляться, и она не разморозится, что бы ни случилось, и мне нужно будет сделать жесткий сброс.

Раньше это часто случалось в Firefox, когда у меня было открыто слишком много вкладок, но я установил расширение Tab Limiter, чтобы смягчить это. Но это просто продолжает происходить, это происходит (иногда), когда я работаю над большим изображением в 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) может привести к высокой задержке, когда файлы, которые были вытеснены из кэша, необходимо снова прочитать, но более отзывчивые программы. Подкачка также может еще больше замедлить работу жестких дисков, поскольку она включает в себя множество случайных записей, в то время как у твердотельных накопителей такой проблемы нет. Конечно, значения по умолчанию хорошо работают в большинстве рабочих нагрузок, но для настольных компьютеров и интерактивных систем для любой ожидаемой задачи может потребоваться понижение настройки при пакетной обработке, а для менее интерактивных систем может потребоваться ее повышение.[19]

Поскольку в Ubuntu по умолчанию установлено vm.swappinessзначение 60, я рекомендую меньшее значение, т. е. 10, чтобы неактивные страницы в оперативной памяти были менее агрессивны по отношению к подкачке.

Выполните следующую команду, чтобы установить значение 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

Вы также можете попробовать разные значения, чтобы увидеть, что подойдет вам лучше всего.

Надеюсь это поможет!

Связанный контент