93

Представьте, что у меня есть тонны оперативной памяти. Допустим, 64 ГБ. Это много даже для игровых ПК. Теперь по умолчанию расположение файла подкачки в Windows находится на главном диске ОС, будь то жесткий диск или твердотельный накопитель, которые в целом работают быстрее, но все же не так быстро, как оперативная память.

Что-то подсказывает мне, что отключение файла подкачки на жестком диске или создание виртуального ОЗУ и сохранение там файла подкачки может заставить Windows переместить всю свою виртуальную память в ОЗУ и, таким образом, повысить производительность системы, но я не очень разбираюсь в этом площадь, так что это может быть не совсем так.

Я пробовал оба, но я не мог проанализировать результаты, чтобы прийти к определенному выводу с моим уровнем знаний в памяти вещей.

Будет ли это работать? Если нет, то почему?

12 ответов12

132

Независимо от того, сколько у вас оперативной памяти, вы хотите, чтобы система могла эффективно использовать ее. Отсутствие файла подкачки заставляет операционную систему неэффективно использовать оперативную память по двум причинам. Во-первых, он не может сделать страницы отбрасываемыми, даже если к ним не обращались и не изменяли в течение очень длительного времени, что приводит к уменьшению дискового кэша. Во-вторых, он должен зарезервировать физическую ОЗУ для резервных выделений, которые вряд ли когда-либо потребуются (например, частное, изменяемое сопоставление файлов), что приводит к случаю, когда вы можете иметь много свободной физической ОЗУ, и в то же время в выделениях отказано избегать чрезмерного выполнения.

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

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

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

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

30

Вы совершенно правы в своем предположении.

Алгоритмы управления памятью очень сложны и ни в коем случае не идеальны. Так что подкачка происходит даже тогда, когда есть много свободной оперативной памяти. В некоторых системах, таких как Linux , вы можете контролировать перестановку , в других - нет. Выполняя обмен данными, когда ОЗУ все еще много, система по-своему готовится к ситуации, когда она может исчерпать ОЗУ.

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

Нужно учитывать одну вещь (и вы уже упоминали об этом) - вам нужно иметь достаточно ОЗУ для размещения всех программ, которые вы выполняете, в противном случае вы рискуете исчерпать память. В этом случае производительность снизится, некоторые процессы могут быть остановлены операционной системой, и система может столкнуться с зависанием / зависанием. (подробнее об этом здесь)

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

Отключив подкачку, вы также предотвратите ненужные операции с алгоритмами памяти - перемещение данных из ОЗУ в своп и наоборот - в случае SSD это предотвратит чрезмерный износ. И в любом случае это повысит производительность за счет устранения ненужных операций.

Также читайте:

14

Можете ли вы безопасно отключить файл подкачки?

Если у вас заканчивается свободная память, включая виртуальную память, система не может продолжать гарантировать детерминированное выполнение и завершает свою работу. До того, как это произойдет, операционная система будет выполнять различные другие действия, такие как уничтожение программ, которые используют слишком много памяти. Я хочу сказать, что память всегда ограничена, и каждая ОС может справиться с этим. Поэтому ограничение общего объема доступной памяти до 64 ГБ не повредит Windows - многие системы не могут превышать 8 ГБ даже с файлом подкачки, потому что с 1 или 2 ГБ ОЗУ файл подкачки обычно намного меньше, чем 6 или 7 ГБ. Следует отметить, что до тех пор, пока у вас слишком много неиспользуемой оперативной памяти, накладные расходы ОС, поддерживающей файл подкачки, не будут измеримы.

Имеет ли смысл помещать файл подкачки на виртуальный диск?

Чтобы увеличить доступную память, большинство, если не все продвинутые операционные системы, используют какой-то файл подкачки, где они занимают некоторую память, находящуюся в оперативной памяти и к которой некоторое время не обращались, записывают память на жесткий диск (файл подкачки или файл подкачки), и удалите память из ОЗУ, чтобы получить более быструю память. Файл подкачки используется для расширения максимального размера памяти сверх размера доступной оперативной памяти.

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

8

Чтобы повторить то, что сказали другие, переносить своп на прямой RAM-диск довольно бессмысленно (в большинстве случаев см. Ниже). Это достигается тем, что в определенный момент, когда системе не хватает свободной памяти, некоторые данные перемещаются из ОЗУ в ОЗУ довольно неэффективным способом.

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

Тем не менее, сжатый RAM-диск как диск подкачки, диск "ZSWAP", может быть полезен в крайних случаях (когда вам может потребоваться всего лишь несколько дополнительных МБ ОЗУ, чтобы избежать переключения на жесткий диск) за счет повышения эффективности использования пространства сегмента ОЗУ до определенной степени.

5

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

Наличие файла подкачки в ОЗУ практически бесполезно, так как оно может быть потеряно при сбое.

Для получения дополнительной информации см. Статью Microsoft « Общие сведения о файлах аварийных дампов».

4

Для Windows изо рта лошади:

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

https://blogs.technet.microsoft.com/markrussinovich/2008/11/17/pushing-the-limits-of-windows-virtual-memory/

  • используемая память - поэтому, хотя рекомендуется использовать виртуальную память, она также предполагает, что вам необходим действительно большой объем оперативной памяти, чтобы быть уверенным в преимуществах отсутствия файла подкачки / виртуальной памяти. У меня 4 ГБ ОЗУ 128 ГБ SSD без файла подкачки, но я использую его для просмотра веб-страниц и ввода документов в формате Word.
3

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

Вы можете уменьшить его примерно до 2/3 объема памяти, если у вас более 4 ГБ памяти, поскольку он хранит сжатый образ памяти. Вы можете поместить его на свой медленный жесткий диск, к которому нет доступа других тяжелых дисков, если у вас нет места на SSD. Но это выгодно иметь где-то один.

Смотрите этот ответ для получения дополнительной информации о том, почему. https://superuser.com/a/286476/4236

3

Теоретически, размещение файла подкачки в ОЗУ не имеет никакого смысла, потому что вы просто исчерпываете то, что якобы получаете, а Windows строится на предположении, что файл подкачки не будет использоваться для таких целей.

Однако на практике некорректный дизайн и философия могут превратить его даже в ядро Windows, и управление памятью от Microsoft не обязательно идеально. Многие обнаружили, что размещение файла подкачки в Ramdisk действительно приводит к увеличению производительности, если у вас есть приличный объем памяти.

Я составил пост, в котором показана коллекция таких пользователей из одной ветки форума, которые обнаружили, что, несмотря на огромное количество свободной оперативной памяти, файл подкачки все еще используется:

http://www.overclock.net/t/1193401/why-it-is-bad-to-store-the-page-file-on-a-ram-disk/290#post_23508589

2

Конвертировать ОС, которая была разработана с самого начала, чтобы не использовать своп, намного сложнее, чем кажется.

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

Ограничение системы одним приложением за раз означает, что подкачка ramdisk практически никогда не используется, но ОС ожидает, что она там будет.

2

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

Вопрос сейчас в том, сколько ОЗУ достаточно ОЗУ? На это нет универсального ответа, и по своей природе системы жаждут памяти. Поэтому, если вы не работаете в очень специфической и контролируемой среде, не отключайте своп.

Любые другие виды трюков, такие как установка подкачки в ОЗУ, просто создадут дополнительный уровень сложности и потратят память, которая в противном случае могла бы использоваться напрямую.

1

Перемещение файла подкачки в ОЗУ - смешное понятие. Просто выключите его и увеличьте объем ОЗУ. :)

No matter how much RAM you have, you want the system to be able to use it efficiently. Having no paging file at all forces the operating system to use RAM inefficiently for two reasons. First, it can't make pages discardable, even if they haven't been either accessed or modified in a very long time, which forces the disk cache to be smaller. Second, it has to reserve physical RAM to back allocations that are very unlikely to ever require it (for example, a private, modifiable file mapping), leading to a case where you can have plenty of free physical RAM and yet allocations are refused to avoid overcommitting.

Consider, for example, if a program makes a writable, private memory mapping of a 4GB file. The OS has to reserve 4GB of RAM for this mapping, because the program could conceivably modify every byte and there's no place but RAM to store it. So immediately, 4GB of RAM is basically wasted (it can be used to cache clean disk pages, but that's about it).

Управление памятью осуществляется процессором, и то, включен ли файл подкачки или нет, не имеет разницы в том, как обрабатываются страницы. Это прозрачно для Windows.

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

Быстрый и очень грязный пример: на моей машине 16 ГБ ОЗУ и нет файла подкачки. 5 минут назад с 13 ГБ в режиме ожидания и только 2 ГБ свободно, я загрузил Fallout 4. Страницы с низким приоритетом отбрасывались при загрузке Fallout.

Между прочим, блог Technet 2008 года о расширении ограничений памяти Windows вводит в заблуждение - я бы сказал, что это обман. https://i.stack.imgur.com/wXkmi.png Я тоже сомневаюсь, даже написал ли это Марк, но надеюсь, что нет, так как это изменило бы мою точку зрения на него .....

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

  • Файл подкачки и его местоположение обрабатываются Windows, а перехват доступа к памяти в местоположениях, которые были выгружены на диск, будет перехвачен ЦП, но передан операционной системе для извлечения страницы с диска и ее загрузки.

Во всяком случае, вот одно не очень расплывчатое описание:

Windows не может достичь более высоких адресов, чем процессор - это невозможно.

Независимо от того, на что способна ОС, она по-прежнему ограничена аппаратным обеспечением, на котором она работает ... потому что ОС фактически является самим процессором (внутренние регистры).

Итак, файл подкачки - это область на жестком диске, которую ЦП использует для расширенного физического адресного пространства, когда он не может физически или архитектурно использовать больше ОЗУ.

Например, в 32-разрядной архитектуре x86 имеется два сегмента оперативной памяти по 2 ГБ.

Один выделен ядру. Остальные 2 ГБ предназначены для пользовательского режима. Это все оперативная память, которую ЦП может использовать с 32 выводами DRAM, но 32-битный процесс имеет 4 ГБ, что делать. К счастью, процессор может использовать дополнительное хранилище AKA и жесткий диск для хранения дополнительных 2 ГБ страниц. Потому что у него есть внутренние регистры
Физические места, где виртуальные страницы, на которые ссылается процесс, не должны храниться в оперативной памяти. Но они хранятся где-то в процессоре.

Процессор не может дать приложению все 4 ГБ ОЗУ, но он может дать ему 4 ГБ адреса, используя жесткий диск в качестве вторичного кеша (что на самом деле является жестким диском)

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

Суть в том, что все не так сложно. За последние 15 лет у многих конечных пользователей сложилось впечатление, что файл подкачки является неотъемлемой частью операционной системы, а не так. Такого никогда не было. Это заблуждение частично подпитывается такими корпорациями, как Intel и Microsoft.

ОЗУ - это быстрое запоминающее устройство, жесткий диск - более медленное запоминающее устройство, поэтому, по сути, ОЗУ - это кэш-память первого уровня, а жесткий диск - это уровень 2 (без учета кэш-памяти ЦП для этой аналогии). Оба могут быть доступны процессором.

Если ЦПУ не хватает ОЗУ для хранения нужных ему страниц, жесткий диск можно использовать как переполнение. Если имеется много оперативной памяти, то PF является избыточным.

Вплоть до Core 2 процессоры Intel имели 32-контактную шину DRAM и 32 регистра, что означало, что ЦП имел доступ к 4 ГБ ОЗУ и 4 ГБ на жестком диске (файл подкачки). Это архитектурное аппаратное ограничение, а не ограничение Windows.

Общее количество доступных процессов составило 3,5 ГБ, поскольку таблица страниц занимает 512 МБ. Вот почему 3,5 ГБ появляется в Windows с процессорами Intel (вплоть до Core 2). Добавьте графический процессор и даже меньше доступно.

Xeon может получить доступ к 32 ГБ ОЗУ, 64 ГБ физического пространства с включенным HDD (снова файл подкачки). (Это ^ относится к PAE, - чтобы добавить ссылки).

http://www.windowsdevcenter.com/pub/a/windows/2004/04/27/pagefile.html

3-й снимок экрана: бинарный интерфейс приложения System V, добавление к архитектуре процессора AMD64, версия 0.99.7

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

1

Моя система имеет 24 ГБ ОЗУ, поэтому я отключил файл подкачки, чтобы избежать износа моего SSD без каких-либо проблем. Недавно я создал RAM-диск, используя 4 ГБ памяти для хранения файлов Google Chrome Cache, просто чтобы увидеть, увеличит ли он производительность онлайн-игр Flash Player и общего веб-серфинга. Я видел заметное увеличение производительности от этого эксперимента. Поскольку на моем RAM-диске было больше свободного места, я включил свой файл подкачки, установил минимальный и максимальный размер 1 ГБ и переместил его на RAM-диск. Хотя я не могу сказать, что было какое-то повышение производительности, моя система работает более стабильно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .