Виртуальная память по-прежнему актуальна в современном мире недорогой оперативной памяти?
Была введена виртуальная память для запуска большего количества программ с ограниченной памятью. Но в сегодняшней среде недорогой ОЗУ она по-прежнему актуальна?
Поскольку доступ к диску отсутствует, если он отключен, и все программы будут резидентными, не улучшит ли производительность и время отклика программы?
Есть ли какое-либо существенное требование для виртуальной памяти в Windows, помимо запуска большего количества программ, как указано выше? Что-то внутреннее, что нам неизвестно.
Ответы
Ответ 1
Вопрос в том, каково использование файла подкачки, учитывая, сколько памяти современных компьютеров и что происходит под капотом в ОС.
Обычно диспетчер задач Windows показывает не так много физической памяти, но у вас много ошибок страниц? Win32 никогда не будет выделять всю физическую память. Это всегда спасает некоторые из новых потребностей в ресурсах. С большим файлом подкачки и небольшим файлом подкачки Win32 будет медленнее выделять физическую память процессу.
В течение нескольких дней я использую очень маленький файл подкачки (200 МБ) в Vista с 3 ГБ адресной физической памяти. У меня не было никаких аварий или проблем. Не пробовал такие вещи, как большое редактирование видео или сразу несколько разных процессов. Я бы не рекомендовал никакого файла подкачки, так как ОС не может перетасовывать страницы в физической памяти, что приводит к разработке дыр. Большой файл подкачки является отказоустойчивым для людей, которые не знают, как вручную увеличить файл подкачки, если появляется предупреждение о низкой памяти или сбой ОС.
Некоторые моменты:
Ядро будет использовать некоторую физическую память, и это будет доступно с помощью сопоставления VM со всеми другими процессами. Другие процессы будут в оставшейся физической памяти. VM заставляет каждый процесс видеть пространство памяти объемом 4 ГБ, а ОС - на 2 ГБ. Для каждого процесса потребуется гораздо меньше, чем 4 ГБ физической памяти, эта сумма является обязательным требованием памяти. При программировании malloc или new резервируют память, но не фиксируют ее. Такие вещи, как первая запись в память, будут зафиксированы. Некоторая память немедленно передается ОС для каждого процесса.
Ответ 2
Некоторые педантисты: виртуальная память - это не только файл подкачки. Этот термин охватывает целый ряд методов, которые придают программе иллюзию того, что у нее одно единственное непрерывное адресное пространство, некоторые из которых - программный код, некоторые из которых являются данными, а некоторые из них - библиотеки DLL или файлы с отображением памяти.
Итак, к вашему начальному вопросу: да, требуется виртуальная память. Это то, что делает современную ОС.
Ответ 3
Не отключать виртуальную память. 2GB не достаточно, чтобы даже рассмотреть это. Несмотря на это, вы всегда должны поддерживать виртуальную память, даже если у вас ее достаточно, так как она будет использоваться только когда вам это действительно нужно. Гораздо лучше быть в безопасности, чем жалеть, потому что, не имея его активного, вы просто нажмете на стену, а его активное действие означает, что ваш компьютер начинает замену на жесткий диск, но продолжает работать.
Ответ 4
Да, потому что он является основой всего пейджинга по требованию, который встречается в современной операционной системе, а не только в Windows.
Windows всегда будет использовать всю вашу память, если не для приложений, а затем для кэширования всего, что вы читаете с вашего жесткого диска. Потому что, если эта память не используется, вы бросаете свои инвестиции в память. В основном, Windows использует вашу оперативную память как большой жирный кеш для ваших жестких дисков. И это происходит постоянно, поскольку соответствующие страницы вводятся в основную память только при обращении к содержимому этой страницы.
Ответ 5
Ваш вопрос действительно касается использования файла страницы, а не виртуальной памяти, как сказал kdgregory. Вероятно, самое важное использование для виртуальной памяти - это то, что ОС может защитить память процесса от другой памяти процессов, при этом каждый процесс создает иллюзию смежного, плоского виртуального адресного пространства. Фактические физические адреса могут и будут фрагментированы, но виртуальные адреса будут отображаться смежными.
Да, виртуальная память имеет жизненно важное значение. Файл страницы, возможно, нет.
Ответ 6
Grrr. Дисковое пространство, вероятно, всегда будет дешевле, чем оперативная память. Один из моих лабораторных компьютеров имеет 512 МБ ОЗУ. Раньше этого было достаточно, когда я его получил, но теперь он замедлился до замены обхода, и мне нужно добавить в него больше оперативной памяти. Сейчас я больше не запускаю больше программ, чем тогда, но они все стали более раздутыми, и они часто порождают более "демонные" программы, которые просто сидят там, ничего не делая, кроме ожидания какого-либо события и использования памяти. Я просматриваю список процессов, а столбец "in-memory" для файлового проводника - 40 МБ. Для Firefox это 162 МБ. Java "планировщик обновлений" jusched.exe
использует еще 3,6 МБ. И это только физическая память, эти числа не включают пространство подкачки.
Итак, действительно важно сохранить более быструю и более дорогую память за то, что нельзя поменять. Я могу запасать десятки GB на моем жестком диске для места подкачки.
Память считается настолько дешевой, что ОС и многие программы больше не пытаются оптимизировать. С одной стороны, это здорово, потому что он делает программы более удобными и отлаживаемыми и быстрее развивается. Но я ненавижу, что мне приходится больше помещать в мой компьютер.
Ответ 7
Хорошее объяснение в
http://blogs.technet.com/markrussinovich/archive/2008/11/17/3155406.aspx
Для оптимального размера вашего файла подкачки вы должны запускать все приложения, которые вы одновременно работать, загружать типичные наборов данных, а затем обратите внимание на фиксацию пик заряда (или посмотреть на это значение после определенного периода времени, когда вы знаете максимальная нагрузка была достигнута). Установить минимальный файл подкачки - это значение минус объем оперативной памяти в вашей системе (если значение отрицательное, выберите минимальный размер, позволяющий который вы настроены для). Если вы хотите иметь передышку для потенциально больших требований к фиксации, установите максимум, чтобы удвоить это число.
Ответ 8
Виртуальная память - это нечто большее, чем просто расширение ОЗУ. На самом деле виртуальная память - это система, в которой они виртуализируют доступ к физической памяти. Приложения представлены согласованной средой, которая полностью не зависит от размера ОЗУ. Это дает ряд важных преимуществ, которые могут быть достигнуты благодаря увеличенной доступности памяти. Виртуальная память является неотъемлемой частью ОС и не может быть отключена.
Файл подкачки НЕ является виртуальной памятью. Многие источники заявили об этом, включая некоторые статьи Microsoft. Но это неправильно. Вы можете отключить файл подкачки (не рекомендуется), но это не отключит виртуальную память.
Virtual mmeory используется в больших системах уже около 40 лет, и в ближайшее время он не исчезнет. Преимущества слишком велики. Если бы виртуальная память была удалена, все текущие 32-разрядные приложения (и 64-разрядные) устарели.
Ларри Миллер
Microsoft MCSA
Ответ 9
Виртуальная память - это защитная сетка для ситуаций, когда для всего запущенного приложения недостаточно ОЗУ. Это было очень распространено некоторое время назад, и сегодня, когда у вас может быть большое количество оперативной памяти, это меньше.
Некоторые говорят, что оставить файл страницы в одиночку и позволить ему управлять Windows. Некоторые люди говорят, что даже если у вас большая ОЗУ, хранящая большой файл подкачки, это не может повредить, потому что она не будет использоваться. Это не так, поскольку Windows делает упреждающий пейджинг для подготовки к скачкам спроса на память. Если этого никогда не будет, это просто потерянная активность жесткого диска, и мы все знаем, что HDD является самым медленным компонентом любой системы. Упреждающий пейджинг с достаточно большой ОЗУ просто бессмысленен, и единственное, что он делает, это замедлить любую другую активность диска, которая происходит одновременно. Не говоря уже о дополнительном износе диска. Плюс большой файл страницы означает гигабайты заблокированного дискового пространства.
Многие люди отмечают статью статью, чтобы подтвердить свою убежденность в том, что файл страницы не должен быть отключен ни при каких обстоятельствах, и поэтому многие умные люди в Microsoft подумали об этом так тщательно, что мы, маленькие разработчики, никогда не должны спрашивать политику Windows по умолчанию на размер файла страницы. Но даже сам Русинович пишет:
Задайте минимальный минимальный размер файла подкачки (значение пиковой фиксации) за вычетом объема оперативной памяти в вашей системе (если значение отрицательное, выберите минимальный размер, чтобы разрешить тип дампа сбоя, для которого вы настроены).
Таким образом, если у вас большие объемы ОЗУ, а плата за оплату за просмотр составляет не более 50% вашей памяти, даже когда вы открываете все свои приложения сразу, а затем некоторые, нет необходимости иметь файл с файлами. Таким образом, в этих ситуациях 99,99% времени вам больше не понадобится больше памяти, чем ваша оперативная память.
Теперь я не сторонник отключения файла страницы, но если он имеет размер вашей ОЗУ или больше, это просто пустая трата пространства и ненужная активность, которая может замедлить что-то еще. Файл страницы дает вам защитную сетку в тех редких ситуациях (с большим количеством ОЗУ), когда системе требуется больше памяти и чтобы она не выходила из памяти, что, скорее всего, сделает вашу систему нестабильной и непригодной для использования.
Единственная реальная потребность в файле страницы - это дампы ядра. Если вам нужны полные дампы ядра, вам потребуется не менее 400 МБ файла подкачки. Но если вы довольны мини-свалками, минимум 16 МБ. Итак, чтобы иметь лучшее из обоих миров, которое
- виртуальный файл
- защищенная сеть виртуальной памяти
Я бы предложил настроить Windows для дампов для мини-ящиков, установить минимальный размер файла страницы до 16 МБ и максимально возможное. Этот файл с образцом будет практически не использован, но автоматически расширится после первой ошибки из памяти, чтобы ваша система не использовалась. Если у вас, по крайней мере, одна проблема с памятью, вы должны, конечно, пересмотреть свой минимальный размер. Если вы действительно хотите быть в безопасности, сделайте файл с файлом мин. размер 1 ГБ. Для серверов, хотя вы должны быть более осторожными.
Ответ 10
К сожалению, это все еще необходимо, потому что операционная система Windows имеет тенденцию к "избыточному кэшу".
Плюс, как указано выше, 2 ГБ на самом деле недостаточно, чтобы рассмотреть возможность его отключения. Черт, я, вероятно, не отключаю его, пока у меня не будет 8 ГБ или больше.
G-Man
Ответ 11
Поскольку доступ к диску отсутствует, если он отключен, и все программы будут резидентными, не улучшит ли производительность и время отклика программы?
Я не совсем уверен в других платформах, но у меня была машина Linux, где место подкачки было случайно отключено. Когда процесс использовал всю доступную память, машина в основном застыла в течение 5 минут, среднее значение нагрузки перешло к абсурдным числам, а ядро убийца OOM и прекратил несколько процессов. Повторная подкачка полностью зафиксировала это.
Я никогда не испытывал ненужной замены на диск - это произошло только тогда, когда я использовал всю доступную память. Современная ОС (даже 5-10-летние дистрибутивы Linux) справляется с swap-пространством довольно разумно и использует ее только при необходимости.
Вероятно, вы можете обойтись без места подкачки, так как довольно редко можно достичь 4 ГБ использования памяти с помощью одного процесса. С 64-битной ОС и, как говорят, 8 ГБ оперативной памяти это еще реже.. но, действительно нет смысла отключать swap-пространство, вы не получаете много (если вообще), и когда у вас закончится физическая память без него, происходят плохие вещи.
В принципе - любая полуприличная ОС должна использовать только диск-обмен (или виртуальную память), когда это необходимо. Отключение свопа только останавливает работу ОС, что заставляет убийцу OOM ударяться (и, следовательно, потеря данных при завершении процессов).