Я запустил что-то, что заняло много памяти, и теперь все сильно отстает. Я предполагаю, что память всех приложений была заменена, чтобы освободить место для процесса, интенсивно использующего память, и теперь все медленно возвращается к ОЗУ при доступе.
Есть ли способ явно перенести все возможное из свопа обратно в оперативную память? Или, может быть, не все, а только некоторые конкретные данные процессов?
swapoff
если объем памятиВы можете настроить его, отображая некоторое число от 0 до 100 в
/proc/sys/vm/swappiness
.источник
sysctl
команду вместо этого. В этом случае это такsysctl vm.swappiness=x
.sysctl
для взаимодействия с пользователем. Конечный результат тот же, но обычно интерфейсы более высокого уровня предпочтительны для непосредственного взаимодействия пользователя. Вроде как запуск двигателя путем короткого замыкания проводов зажигания (нижний уровень) вместо простого поворота ключа (более высокий уровень).Linux отлично справляется с управлением памятью, и вы не должны стоять на пути. Настройка vm.swappiness (упомянутая ранее) не мешает. Вы, скорее всего, будете испытывать странные проблемы, поступая иначе.
Что вы запустили, что было так жадно до памяти? Это можно настроить? Если у него нет своих собственных директив по ограничению памяти, вы также можете посмотреть на ulimit.
источник
convert -density 200 file.pdf jpegs/file.jpg
. По какой-то причине он использует много памяти, но вы правы: его можно настроить. В любом случае, ситуация возможна с любым приложением :)convert
имеет-limit
аргумент для управления памятью и использованием диска, и вам следует ознакомиться с ними. Настройка-limit memory 512MB
или подобное было бы хорошо. Вероятно, было бы также хорошо указать явный MAGICK_TEMPORARY_PATH и очистить его после выполнения команды.Если у вас есть память, доступная для всех ваших приложений, можно установить значение подкачки равным 0, чтобы ничего не поменялось. Например, qemu-kvm - это большая цель, которую VMM должен выгружать, потому что он «кажется» большую часть времени простаивает. Я вижу, что до 80% памяти памяти qemu-kvm записывается подкачку. Виртуальные машины, работающие в qemu-kvm, станут почти не отвечать на запросы, потому что у них заканчивается своп (хотя гость не знает, что это происходит). Гостевая виртуальная машина будет думать, что она работает превосходно, хотя на самом деле она тянет ужасно. Когда я работаю с несколькими виртуальными машинами и начинаю что-то делать, это может увеличить среднюю нагрузку до 30, даже на оборудовании корпоративного уровня с достаточным количеством быстрой памяти и диска. Я предполагаю, что это ошибка в готовом дизайне qemu-kvm.
Надеюсь, это кому-нибудь поможет.
источник
Я бы не советовал пытаться перехитрить подсистему VM в ядре. Крайне маловероятно, что у вас на самом деле достаточно информации, чтобы принимать лучшие решения, чем она. И если вы заставите это сделать что-то не то, тогда вы просто сделаете вещи еще медленнее.
источник
Если вы можете перезагрузить систему, которая должна это сделать (и это может занять гораздо меньше времени, чем пробовать любое другое решение).
источник
Чтобы скопировать часть моего ответа на этот вопрос .
Так что вы знаете, как работает переменная перестановки. Это работает, сообщая подсистеме VM, что нужно искать страницы, которые нужно поменять местами, когда% памяти, сопоставленный таблицам страниц процесса + значение подкачки> 100. Таким образом, значение 60 заставит систему начать выгружать устаревшие страницы из таблицы страниц процесса. когда он использует более 40% памяти вашей системы. Если вы хотите, чтобы ваши программы использовали больше памяти за счет кэша, вам нужно уменьшить значение подкачки.
источник
Процесс все еще работает? Откройте терминал и посмотрите, сможете ли вы определить процессы, которые были запущены. (ps aux | grep имя_процесса может сделать это немного проще) Используйте kill -9 PID, чтобы убить их, если они все еще работают. Будьте осторожны с тем, что вы убиваете. Если вы не знаете, что это за процесс, не убивайте его! Кроме того, опубликуйте вывод free -m, чтобы мы могли увидеть, действительно ли вы все еще используете много свопов.
Если что-то все еще работает медленно, у вас может быть запущено все, что вы запустили. Я бы никогда не выключил своп, если бы вы не знали, что делаете, или не любите жить на грани. знак равно
источник
Я полагаю, что не существует какого-либо действительно хорошего способа заставить Linux разархивировать данные с диска в память. Когда swapoff / swapon - это рабочее решение, но оно грязное и легко может сделать вашу систему нестабильной. В тех случаях, когда в разделе подкачки данных больше, чем свободной памяти, трудно представить какую-либо эффективную политику, которую Linux может использовать для определения того, какие части данных перемещаются в память, а какие хранятся на диске.
Резюме: Просто позвольте Linux постепенно восстанавливать свою производительность обычным способом. Ее подсистема ВМ организована таким образом, что она стремится и постоянно движется к некоему идеальному сбалансированному состоянию.
источник
Очистка буфера кеша
Если вы хотите очистить их, вы можете использовать эту цепочку команд.
Вы можете сообщить ядру Linux об удалении различных аспектов кэшированных элементов, изменив числовой аргумент на приведенную выше команду.
ПРИМЕЧАНИЕ: очистите память от ненужных вещей (ядро 2.6.16 или новее). Всегда сначала запускайте синхронизацию, чтобы записать полезные вещи на диск !!!
Чтобы освободить кеш страницы:
Чтобы освободить дентрии и иноды:
Чтобы освободить страничный кеш, дентри и иноды:
Вышеуказанное предназначено для запуска от имени пользователя root. Если вы пытаетесь сделать это с помощью sudo, вам нужно немного изменить синтаксис примерно так:
источник