После большой нагрузки ввода-вывода и хранения многих вещей в Zram используемое пространство близко к общему в `free`

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

for z in /usr/local/bin/*
do
  if [ -h "${z}" ] && readlink -f "${z}" | grep -q '^/home/Steven'
      then rm "${z}"
  fi
done

Команда readlink -fвозвращает полный путь к файлу, на который указывает символическая ссылка. Команда grep -q '^/home/Steven'возвращает значение true, если путь начинается с подстроки '/home/Steven', и значение false в противном случае.

Слово предостережения :здесь есть некоторая двусмысленность, связанная с символическими ссылками, которая может повлиять на результат. Команда readlink -fбудет рекурсивно разрешать ссылку, поэтому приведенная выше команда завершится ошибкой, если файл в каталоге /home/Stevenсам по себе является точкой символической ссылки за пределами этого каталога. Если это нежелательное поведение, вы можете вместо этого использовать команду realpath.

0
05.10.2019, 02:14
1 ответ

Краткий ответ:Используйте параметры сброса монтирования при монтировании файловых систем или включении подкачки, созданной на устройствах Zram.

Расширенный:При монтировании файловой системы используйте discardв качестве опции монтирования, вы можете установить опции монтирования с помощью -oи опции, разделенные ,, без пробела между ними. Он должен поддерживаться в большинстве файловых систем Linux, я использую его в Btrfs. При обмене используйте -dпри использовании swapon. Вы также можете в дополнение к этому периодически запускать fstrimв каталоге, в котором смонтирована файловая система, но из того, что я видел в выводе zramctl, в этом нет необходимости, и параметр монтирования discardдостаточно хорошо.

Редактировать:На самом деле, после некоторых дополнительных тестов я думаю, что неплохо периодически запускать fstrimна монтировании Zram. После компиляции Firefox с его каталогом сборки в Zram было использовано около 1,1 ГБ ОЗУ. Не так плохо, как без варианта крепления discard, но есть возможности для улучшения. Запуск fstrimна монтировании Zram (, запуск которого занял всего пару секунд ), привел к тому, что использование ОЗУ увеличилось до 400 МБ, что является нормальным. Я бы, вероятно, поместил его в задание cron или после компиляции portage.

Объяснение:Когда файлы удаляются, Zram не удаляет сжатые страницы из памяти, потому что он не уведомляется о том, что пространство больше не используется для данных. Опция discard выполняет сброс при удалении файла. Если вы используете опцию сброса монтирования, Zram будет уведомлен о неиспользуемых страницах и соответствующим образом изменит их размер.

1
28.04.2021, 23:28

Теги

Похожие вопросы