Автоматически перемещать данные из подкачки в оперативную память, как только становится достаточно памяти

2

Да, я знаю, что уже есть вопросы, которые задают то же самое. Но ни один из ответов на самом деле не отвечает на вопрос .

Один из распространенных ответов: «Вам не нужно беспокоиться об этом, потому что использование свопа не означает, что что-то активно выгружается / выгружается». Этот ответ технически правильный, но если что-то поменяется, это означает, что попытка использовать некоторые из запущенных в данный момент программ будет очень медленной. И эти проблемы сохраняются в течение нескольких часов после того, как я закрыл программу, которая вызвала обмен в первую очередь.

Другим распространенным ответом является «выключить своп». Это ручное решение, и оно может быть немного рискованным. Даже если я проверю, что на самом деле у меня достаточно свободной памяти, если я при этом запустлю какую-нибудь программу, потребляющую память, то, скорее всего, все пойдет не так.

Итак, мой вопрос: есть ли какой-нибудь способ автоматизировать его, который не сломается, как только я запускаю программу, занимающую память, пока она перемещает данные из свопа в оперативную память?

barteks2x
источник
3
Почему вы хотите, чтобы система выполняла дополнительную работу по подкачке всех этих данных, когда ни одна из программ в настоящее время не использует ее, а может и никогда? вы переходите из ситуации, в которой вы МОЖЕТЕ столкнуться с перетаскиванием производительности при подкачке данных назад, когда это необходимо во время выполнения, к ситуации, когда вы БУДЕТЕ испытывать такое же перетаскивание, но на этот раз это гарантированно произойдет, и не будет прямого ответа срочно нужно. Тратить впустую ресурсы, делая это сейчас, просто потому, что это может понадобиться позже, кажется неразумным. Лучше сжечь свои деньги сейчас, потому что они МОГУТ загореться в какой-то неуказанной дате в будущем?
Фрэнк Томас
Кажется, что делать это сейчас, а не тогда, когда какая-то программа не должна сильно влиять на производительность. Когда какая-то программа нуждается в этом, она нуждается в этом немедленно, чтобы продолжить работать. Делать это в фоновом режиме можно с более низким приоритетом (если это возможно), без заметного влияния на производительность. И после выхода из программы, которая использовала несколько ГБ памяти, я на 100% уверен, что у меня возникнут проблемы с производительностью каждой работающей в данный момент программы всякий раз, когда я пытаюсь ее использовать.
barteks2x
1
так как же определить, когда лучше всего делать это в фоновом режиме? это намного сложнее, чем просто извлечение страниц диска, когда физическая память освобождается. Я бы сказал, что если вы сильно обременены производительностью, возможно, пришло время увеличить объем ОЗУ, поскольку вы заставляете больше подкачки страниц, чем на самом деле хорошая идея, если у вас слишком мало (или вы пытаетесь с этим слишком много сделать).
Фрэнк Томас
1
Закрытие и повторное открытие любой программы, которую вы используете, будет одним из вариантов. Преимущество в том, что вы можете быть очень избирательными в отношении того, что загружается обратно.
Мокубай
Когда эта опция будет доступна - делайте это всегда, когда достаточно свободной памяти, и ни одна из программ не выгружается, а загрузка процессора не слишком высока. Это то, что я бы назвал «делать что-то на заднем плане». Это действительно серьезная проблема для меня, когда я запускаю какую-то программу, потребляющую память, закрываю ее, и даже спустя несколько часов производительность некоторых программ все еще остается плохой из-за этого.
barteks2x