зачем нужна виртуальная память

Файл подкачки Windows

По запросу в любой поисковой системе «файл подкачки windows» можно получить тысячу-другую скопированных друг у друга, либо немного отличающихся ответов по выбору оптимальных размеров для pagefile.sys.

Самые распространенные советы выглядят примерно следующим образом: для машин с маленьким ОЗУ нужно задавать размер файла подкачки k*RAM, где RAM — объем физической памяти, k — какой-нибудь коэффициент, коих много самых разнообразных. И 1,5, и 2, и даже 3 встречал. Если же планок памяти стоит на 4Гб и больше, то «смело отключайте виртуальную память в принципе».

Статья о том, стоит ли верить ли этим советам, и если да, то насколько.

Что такое файл подкачки?

pagefile.sys, он же файл подкачки — файл, представляющий собой виртуальную память, которая позволяет одновременно выполняться большому количеству процессов, которые все сразу не смогли бы поместиться в физической памяти.
По умолчанию после установки Windows файл подкачки увеличивается автоматически при заполнении текущего объема.

Если отключить файл подкачки

Если попытаться отключить файл подкачки в windows 7, система выдаст предупреждающее окно, в котором сообщит о неприятных последствиях:

Отсюда следует, что не стоит полностью отказываться от использования виртуальной памяти, иначе в случае краха не получится даже проанализировать причину сбоя. Указанный на скриншоте минимальный размер в 1МБ берется из расчета конфигурации дампа памяти в настройках «загрузка и восстановление»:

Если выбрать для записи отладочной информации полный дамп, то размер увеличивается на несколько порядков. У меня он составил 400МБ.

Кроме отсутствия возможности записи дампа, после отключения файла подкачки может появится назойливое сообщение о нехватке памяти. Появление его будет сопровождаться жуткими тормозами ресурсоемких приложений.

Если перенести файл подкачки на другой раздел

Куча статей по оптимизации вашей ОС рекомендует перенести файл подкачки на отдельно созданный и отформатированный в FAT32 раздел жесткого диска. При этом повышается быстродействие и уменьшается фрагментация этого файла.

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

Размер файла подкачки

Вернемся к нашим апельсинам к вопросу об оптимальном размере. Перекопав множество статей, информационных изданий и даже рекомендации Microsoft, я так и не нашел четкого и однозначного ответа на этот вопрос. Да и не нашел бы, как стало мне ясно после прочтения перевода статьи Марка Руссиновича Преодолевая ограничения Windows: виртуальная память. В заключении приведу ссылки на перевод и оригинал, а сейчас постараюсь объяснить, откуда же взять размер файла.

Для начала потребуется утилита Process Explorer, она является бесплатным аналогом дефолтного Task Manager’a, но обладает многими преимуществами. Скачать можно по ссылке.

После запуска Process Explorer’a выберите самые ресурсоемкие в плане используемой памяти приложения, которые используете в повседневной жизни, и запустите их все одновременно. В окне Process Explorer’a нажмите CTRL+I или выберите в меню View/System Information, из всего многообразия представленных в окне данных нужно выбрать область Commit Charge

Значение Peak — пиковое значение выделенной памяти для всех приложений, складываемое из физической и виртуальной памяти.

Далее вооружаемся калькулятором и вычитаем из этого значения размер оперативной памяти. Если получается отрицательное значение — берем требуемые системой 400МБ (может быть другое значение), необходимые для создания дампа. Если получается положительное значение — выставляем таким минимальное и максимальное значение файла подкачки. Можно подстраховаться и установить «про запас» максимум выше, но тогда вырастет фрагментация файла в случае увеличения его размеров. Поэтому лучше зафиксировать на одном месте.

Источник

Что на самом деле может виртуальная память

Мы в 1cloud стараемся рассказывать о различных технологиях — например, контейнерах, SSL или флеш-памяти.

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

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

Занявшись обновлением собственного компилятора C и написанием спецификации CPU Элдер понял, что с виртуальной памятью связано очень много вопросов, которые до конца не понятны начинающим разработчикам. По этой причине он решил написать свое интерактивное пособие.

Прежде чем переходить к статье Элдера, можете посмотреть видео, на котором Джейсон Питт (Jason Pitt) рассказывает о том, что такое виртуальная память.

Как это работает

Элдер создал на своем сайте таблицу с физическим и виртуальным представлениями 256-байтного адресного пространства. Ниже представлен скриншот этой таблицы. Интерактивная версия доступна в блоге инженера по этой ссылке.

Обозначения, встречающиеся в интерактивной таблице Элдера:

0x0 Это указатель на страничную структуру верхнего уровня. На машинах Intel это значение хранится в регистре CR3. С ARM все немного сложнее.
Первая страничная структура. При двухуровневой организации таблиц часто называется «директорией» страниц. В нашем случае каждая запись в директории занимает 8 бит (1 байт) и содержит информацию о месторасположении таблицы страниц.
Вторая страничная структура – это так называемая таблица страниц (page table). Каждая запись содержит информацию о расположении физической страницы.
Физическая страница, с которой в настоящий момент ведется работа.
Активная запись директории страниц или таблицы страниц.
Выбранное расположение в памяти.
Память, доступная для чтения (Readable Memory). В данном примере разрешения не анализируются, однако в реальной системе будет осуществляться проверка бита на соответствие требуемому методу доступа.
Память, доступная для записи (Writeable Memory).
Память, для которой разрешено выполнение (Executable Memory).
Недоступная виртуальная память (Inaccessible Virtual Memory).
Неинициализированная физическая память (Unitialised Physical Memory). К ней нельзя обратиться через адресное пространство виртуальной памяти – это вызовет страничное нарушение.
Недоступная физическая память (Inaccessible Physical Memory). Участки памяти, к которым нельзя получить доступ.
Читайте также:  Что взять на отдых на яхте

Отображение адресов «один в один» (Identity Mapping)

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

Рекурсивное отображение (Recursive Mapping)

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

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

Как только вы сгенерируете виртуальные адреса, соответствующие записям в директории страниц (соединенные через рекурсивную запись), записи директории страниц можно будет считать записями таблицы страниц. Если структура записей таблицы страниц соответствует структуре записей директории страниц, то их можно считать равнозначными при трансляции адресов.

В итоге это дает возможность ссылаться на любую страничную структуру через виртуальную память. Недостатком рекурсивного отображения можно считать необходимость выделения дополнительного адресного пространства.

Отображение на одну страницу (Everything Mapped to the Same Page)

Важная особенность виртуальной памяти состоит в том, что она позволяет отображать физические страницы на множество виртуальных адресов в памяти. Это дает возможность отображать страницы, принадлежащие участку разделяемой памяти с атрибутом «только для чтения», на несколько процессов.

Страничные нарушения (Page Faults Everywhere)

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

Переключение контекста между двумя процессами (Context Switching Between 2 Processes)

Изменяя указатель на страничную структуру верхнего уровня, мы переходим в другую страничную директорию. При этом доступные адреса остаются теми же, но их содержимое меняется. Это объясняет, почему в ОС с виртуальной памятью множество процессов могут использовать один и тот же виртуальный указатель.

Решение проблемы внешней фрагментации (Solving External Fragmentation)

Внешняя фрагментация – это весьма неприятная вещь. Рассмотрим такую ситуацию: у вашего компьютера 4 ГБ памяти, но нет жесткого диска. После нескольких операций распределения памяти система оказалась в ситуации, когда все пространство памяти свободно, кроме одного байта в самой середине. В этом случае, если вам потребуется разместить большой трехгигабайтный блок, вы не сможете этого сделать (несмотря на то, что свободной памяти достаточно).

Из этой ситуации есть два выхода:

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

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

Копирование при записи (Copy-On-Write)

Виртуальная память крайне полезна для повышения производительности при выполнении команды fork. Если делать полные копии каждой страницы памяти, которую использует процесс, то это приведет к пустой трате циклов CPU и RAM. Идея копирования при записи состоит в том, что мы просто отображаем образ памяти родительского процесса в адресное пространство дочернего процесса.

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

Эксперимент со страницами

Элдер провел эксперимент на своем компьютере с операционной системой Ubuntu 14.04. Он объявил несколько переменных подряд, чтобы посмотреть, будут ли их указатели также располагаться рядом друг с другом.

Вот, что он получил на выходе:

Читайте также:  зачем люди ставят дизлайки

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

Вызов функции с помощью констант

В следующей программе задаются несколько произвольных констант (которые позже будут заменены) и функция, которая принимает на входе целое число и увеличивает его на 8. В данном примере функция main следует сразу за функцией func1. После запуска программа выводит информацию, необходимую для выполнения функции func1.

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

На выходе по-прежнему имеем число 37.

Источник

Файл подкачки. Правильная настройка файла подкачки и его оптимальный размер.

Здравствуйте уважаемые читатели! Сегодня мы открываем цикл статей про оптимизацию компьютера на ОС Windows. Начнем мы с такой штуки как файл подкачки. В этой статье вы найдёте ответы на такие вопросы: Где находится файл подкачки?; Как правильно настроить файл подкачки?; Как задать оптимальный размер файла подкачки для разных объемов оперативной памяти?. Поехали!

Файл подкачки. Терминология.

Файл подкачки (pagefile.sys) — это системный файл на жестком диске (как правило на системном диске) компьютера, который служит как бы дополнением (расширением) к оперативной памяти. Также эту дополнительную память называют виртуальной памятью компьютера.
Виртуальная память — метод управления памятью компьютера для выполнения программ требующих большие объемы оперативной памяти, чем есть реально на компьютере. Недостающую оперативную память такие программы получают из файла подкачки. Другими словами, файл подкачки разгружает оперативную память в периоды её сильной загрузки.
Оперативная память в разы быстрее чем память файла подкачки. Если одновременно запустить несколько приложений в системе, которые потребляют много оперативной памяти, то данные неиспользуемых из них будут выгружены из оперативной памяти в менее быструю виртуальную память. Активные же приложения будут обслуживаться непосредственно оперативной памятью (RAM). Также, если например свернутое приложение развернуть, то данные из виртуальной памяти вновь перейдут в RAM.

Как настроить файл подкачки и изменить его размер?

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

До пункта Быстродействие можно дойти также введя команду sysdm.cpl в командной строке Выполнить (командную строку можно открыть нажав WIN+R ).

Для отключения файла подкачки поставьте переключатель в пункт Без файла подкачки.

Размер файла подкачки Windows. Какой правильный?

Конечно, это субъективный взгляд и данные показатели не могут быть абсолютно точными, рекомендуемыми, но на практике именно они давали эффект. Вы можете сами поэкспериментировать и найти лучшее сочетание для вашего компьютера. Тут есть и некоторые примечания.

Правильное расположение файла подкачки. На каком диске включить?

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

При этом система во время работы обращается к наименее загруженному разделу, не трогая первый.
Также рекомендуется, под файл подкачки создавать отдельный раздел, с объёмом памяти равной либо близкой размеру файла подкачки (например 2024мб). Эта хитрость позволяет избавиться от фрагментации данного файла.

Итоги:

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

Источник

Для чего нужна виртуальная оперативная память.

Виртуальная оперативная память используется во всех современных операционных системах. Она позволяет имитировать больше RAM памяти, чем фактически установлено на вашем компьютере.

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

Несколько лет назад RAM память для компьютера была очень дорогим товаром. Если добавить к этому тот факт, что не все запущенные приложения, используются одновременно, встаёт необходимость в контроле использования памяти самой системой.

Хотя RAM память была дорогой, но ведь есть жёсткий диск. Так для увеличения памяти стал использоваться жёсткий диск. Процедура была простой, на жёсткий диск передавалась часть, в данный момент не используемой оперативной памяти.

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

Проблема в том, что скорость доступа к расположенным на жёстком диске данным в тысячи раз медленнее, чем к RAM памяти. Если часть памяти находится на диске, системе требуется время, чтобы взять её и вернуть в основную память, так как это единственное место, которое может использоваться процессором.

Читайте также:  учителя имеют право забирать телефон в школе статья

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

Почему виртуальная оперативная память так важна.

Если не хватает памяти, невозможно запустить другие программы, а в тех, что запущены, могут быть проблемы при работе с большим количеством данных. Но, из-за использования виртуальной оперативной памяти ваш компьютер может работать медленнее. Это произойдёт, если ему придётся использовать память на жёстком диске. Как всегда получается компромисс между скоростью и количеством обрабатываемых системой данных.

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

Использование виртуальной оперативной памяти в современных операционных системах.

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

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

Стоит ли отключать виртуальную оперативную память.

Стоит ли отключать функцию виртуальной оперативной памяти и принесёт ли это улучшение производительности. В принципе обычному пользователю отключать функцию виртуальной оперативной памяти не рекомендуется. Если у вас в компьютере много памяти, вы не используйте одновременно много приложений, но у вас есть проблемы с производительностью, тогда можно и попробовать отключить эту функцию.

Короче говоря, виртуальная оперативная память позволяет увеличить вашу способность работать с несколькими программами одновременно, но и может снизить производительность вашего компьютера.

Источник

Что будет, если увеличить файл подкачки: стоит ли это делать и для чего он нужен

Определение

Чтобы было понятно, разберём пример. Вы запускаете приложение. В процессе его работы системе требуется память, где она будет хранить данные этого приложения. В первую очередь ОС будет использовать ОЗУ, но если её не хватает, то для освобождения пространства часть данных (более старые или временно свёрнутых программ) будет скопирована в pagefile.sys и пролежит там вплоть до момента новой необходимости или закрытия программы.

Друзья, хотя такую память называют виртуальной, она вполне реальна и отнимает энное пространство на выбранном диске, поэтому возникает вопрос, что будет с компьютером, если её увеличить. Однозначного ответа нет. С одной стороны, система начнёт работать стабильней и быстрее, так как при запуске тяжёлых программ, будет достаточное пространство для хранения рабочих данных, с другой – при увеличении «виртуалки», уменьшается ОЗУ, значит, ОС придётся чаще обращаться к первой, скорость которой значительно ниже.

Сразу выскажу своё мнение – файл подкачки нужен, особенно для корректной работы игр. И я не сторонник его отключения, как советуют многие пользователи в сети, конечно, если у вас ОЗУ менее 16 ГБ. Тем более, многие приложения просто не могут функционировать без «виртуалки», например, графические и видеоредакторы.

Оптимальный размер

Изменять или нет файл подкачки, зависит от укомплектованности самой машины и от того, чем вы на ней занимаетесь, например, если вы любитель наоткрывать кучу приложений и держать их длительное время в свёрнутом состоянии, то вам стоит увеличить его размер минимум в 2 раза.

Рассмотрим, в каких случаях этого делать не стоит:

Тем, кто всё же решился вмешаться в работу windows 10, дабы самостоятельно выставить размер файла подкачки, дам несколько рекомендаций:

Друзья, заметили тенденцию? Чем больше на ПК оперативной памяти, тем меньше нужен файл подкачки, так как система будет работать непосредственно с оперативкой. НО! Повторюсь, некоторые программы (игры, графические редакторы и т.д.) просто не функционируют без «виртуалки», а ещё в ней сохраняется дамп — сведения об ошибке при появлении синего экрана «смерти».

Выбор диска

По умолчанию pagefile.sys располагается на системном диске, но часто бывает, что его скорость из-за постоянной загруженности оставляет желать лучшего. Поэтому правильнее перенести файл на другой диск, не занятый работой самой ОС. Если в ПК используются HDD-диски, то оценить их скорость можно специальными программами (CrystalDiskMark, AS SSD Benchmark и другие). После мониторинга станет ясно, какой диск быстрее, именно на него следует ставить файл подкачки.

Есть ещё один вариант – разделить виртуальную память надвое, то есть на носителе с системой оставить небольшой файлик, необходимый для работы самой операционки, а на более быстром диске создать ещё один большего размера, который будет использоваться Windows для сохранения данных приложений.

Где и как настроить

Друзья, вот мы и подошли к техническим моментам, тому, где и как изменять размер файла подкачки в «десятке»:

Друзья, хорошо всё обдумайте, прежде чем начинать вмешиваться в работу системы. Подумайте, может, лучшим вариантом станет замена ОЗУ на более объёмный вариант, если вам действительно не хватает имеющейся на ПК памяти. А для сомнительного увеличения производительности машины ради повышения собственной самооценки, проводить такие манипуляции не стоит. До свидания.

Источник

Универсальный бизнес портал