Рейтинг:1

Автоматически управлять свопом/памятью

флаг bd

При заполнении всей памяти и подкачке мой опыт последних лет был таков:

  • Windows и macOS говорят: «О, давай исправим это для тебя», а затем, предположительно, увеличивают размер подкачки. Открытие напр. 30 вкладок YouTube замедляют работу на некоторое время, но обычно я все еще могу использовать курсор, если хочу прервать процесс, и после этого остальная часть системы (не обязательно приложение-нарушитель) реагирует так же, как всегда.

  • Ubuntu (21.04) говорит: «Извините, вы не можете взаимодействовать с компьютером в течение следующих десяти-тридцати минут».На том же оборудовании и в том же браузере я могу открыть 30 вкладок YouTube и наблюдать, как вся система зависает. Вся память и подкачка израсходованы, а курсор не просто тормозит, а фиксируется на месте. Я не могу осмысленно взаимодействовать с остальной частью системы.

Разница, похоже, в том, что Ubuntu никогда не разрешает ситуацию, поддерживает постоянный размер подкачки и, следовательно, постоянно блокируется каждые пять секунд. То есть до тех пор, пока не произойдет катастрофический сбой и Firefox бесследно не исчезнет — то, что практически никогда не происходит в других ОС. Самым важным аспектом является то, что я не могу взаимодействовать с остальной частью системы.

Я не знаю, но у меня сложилось впечатление, что это не было бы проблемой, если бы размер свопа увеличивался в зависимости от спроса. Как это достигается? Можно ли как-то улучшить управление памятью?


Тестовое обновление

После (не так быстро) выполнения быстрого теста, предложенного в комментариях, где я удвоил размер файла подкачки, я могу сделать вывод, что это имеет большое значение в мире. Система оставалась отзывчивой во время той же нагрузки. Могу только заключить, что адаптивный размер подкачки смягчил бы описанную проблему.

$ бесплатно -ч
              общее количество использованных бесплатных общих баффов/доступных кешей
Память: 3.7Gi 3.1Gi 129Mi 374Mi 566Mi 105Mi
Свап: 4.0Gi 3.0Gi 988Mi

$ sysctl vm.swappiness
vm.swappiness = 60

$ swapon -s
Имя файла Тип Размер Используемый Приоритет
/swapfile_4G.img файл 4194300 3180664 20

Примечание об оборудовании

Одним из преимуществ Ubuntu (среди прочих) является постоянная поддержка и увеличение срока службы старого оборудования, в том числе машин с общим объемом памяти меньше среднего. Не абсурдно мало памяти, о чем свидетельствует тот факт, что другие операционные системы вполне справляются, чуть меньше среднего. Многие из этих машин не подлежат модернизации.

4 ГБ ОЗУ отлично подходят для большинства случаев использования.. В Ubuntu, в Windows, в macOS. Однако в Windows и macOS работает нормально только тогда, когда вы используете все выделенное пространство подкачки.

Короче говоря, в тот же момент, когда решение по запуску Ubuntu прилично становится «купить новое оборудование», и весь смысл его запуска становится спорным для всех этих машин. Обновление оборудования выходит за рамки этого вопроса.

Требования к стандартной редакции Ubuntu — 4 ГБ памяти.

Zanna avatar
флаг kr
Комментарии были [перемещены в чат] (https://chat.stackexchange.com/rooms/126367/discussion-on-question-by-andreas-automatically-manage-swap-memory) (в надежде вернуть внимание к вопросу о это / как можно добиться эффекта «адаптивного свопинга» в Ubuntu)
Рейтинг:1
флаг in

Ядро Linux... сомнительно с точки зрения поддержки подкачки. Swap является гражданином второго сорта с точки зрения многих разработчиков. Под этим я подразумеваю, что алгоритм, используемый для извлечения и извлечения страниц, довольно прост и может выйти из строя при наличии большого количества часто используемых страниц.

Достойным решением, вероятно, будет использование zswap. Что это делает, так это устанавливает кусок памяти для сжатой памяти, в которую извлекаются страницы. Для этого отредактируйте параметры загрузки ядра, чтобы добавить zswap.enabled=1 zswap.compressor=lz4 zswap.max_pool_percent=20 zswap.zpool=z3fold. Самый простой способ сделать это в системе Ubuntu — добавить его в /etc/по умолчанию/жратва файл, как часть GRUB_CMDLINE_LINUX_DEFAULT ключ. Это эффективно увеличит объем данных, которые можно хранить в ОЗУ, уменьшив дисковый ввод-вывод и предотвратив зависания.

Наконец, вы спрашиваете о динамическом создании большего пространства подкачки. Linux полностью способен добавлять и удалять файлы подкачки по желанию, а это означает, что сценарий может проверять доступность подкачки, а затем добавлять файлы подкачки, если это необходимо. Однако в этом нет особого смысла, если вы очень часто используете полное пространство подкачки.

Чтобы увеличить пространство подкачки (без переразбивки диска), вы можете использовать файл подкачки. Для этого запустите sudo dd if=/dev/zero of=/swapfile count=1M bs=1024 status=progress, который копирует 1 миллион блоков по 1024 байта (т. е. 1 гигабайт) в файл. Затем запустите sudo chmod 0600 / файл подкачки и sudo mkswap / файл подкачки чтобы подготовить файл для использования в качестве подкачки. Добавьте его в /etc/fstab, чтобы он всегда был доступен, добавив в этот файл следующую строку: /swapfile swap своп по умолчанию 0 0. Для завершения процесса позвоните судо свопон -а, который активирует файл подкачки.

Источник: я сам использую файлы подкачки и zswap и ссылаюсь на свой bash_histroy и Arch wiki для команд.

флаг bd
Спасибо за актуальный ответ.Я только что попробовал динамическое выделение пространства подкачки с помощью легкодоступного пакета `swapspace`, как было предложено в комментарии, и подумал, что теперь я рассмотрю ваше предложение по сжатию памяти. Однако в рассматриваемой системе уже запущен процесс под названием «zswap-shrink» — не уверен, указывает ли это на то, что zswap каким-либо образом включен.
флаг bd
Один вопрос: можно ли как-нибудь подтвердить, что сжатие памяти работает после его включения? По крайней мере, это кажется полностью прозрачным, например. системный монитор идет.
Calum McConnell avatar
флаг in
Основываясь на [этом ответе] (https://unix.stackexchange.com/a/412760/450166), самый простой способ — «sudo grep -R /sys/kernel/debug/zswap». Grep используется, потому что файлы в дереве /debug/ не видны пользователю, поэтому расширение оболочки не работает. Он также добавляет метки файлов рядом с каждым из чисел, что делает его действительно читаемым.
флаг bd
Спасибо. Вы хотели опустить регулярное выражение (`.`)? Без него происходят странные вещи :) С ним я получаю статистику, однако все равно ноль даже при 93% ОЗУ и 40% использовании подкачки. Не уверен, как это интерпретировать
Рейтинг:0
флаг bd

Как было упомянуто в комментарии @Terrance Подкачка является решением этой проблемы.

apt установить пространство подкачки

Теперь все, что вам нужно, чтобы контролировать свою систему, — это свободное хранилище. Протестировано и работает.

Ответить или комментировать

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