Фрагментация файла подкачки: факт или вымысел?

Это касается Windows, но я уверен, что это относится и к другим ОС.

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

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

Итак, есть ли смысл бороться с фрагментацией файла подкачки или нет?

8 ответов

Решение

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

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

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

Это, конечно, не проблема в системах Linux, где подкачка - это всегда раздел со специальной файловой системой для файлов подкачки. Это, очевидно, возможная проблема в Windows, и я думаю, что это также возможная проблема в Mac OS X, поскольку она, похоже, использует файлы для подкачки.

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

Когда я запускал Windows-машины, я всегда либо создавал раздел подкачки, либо использовал отдельный диск, а затем велел Windows использовать только этот диск для подкачки и не менять его размер. Я бы настроил его на использование в 2,5 раза больше объема оперативной памяти, как на минимальное, так и на максимальное, и оставил это на этом. У меня нет никакой возможности узнать наверняка, действительно ли это помогло, но, безусловно, у него не было побочных эффектов.

Короче говоря: да

Фрагментация файла подкачки - это реальная проблема, она более вероятна из-за того, что у вас меньше свободного места на жестком диске, но есть и другие файлы, которые могут оказаться похожими на файлы реестра db. Microsoft очень четко говорит о том, что Windows должна контролировать размер файла подкачки, и делать это вручную считается плохим, и делать это нужно лишь в очень немногих случаях. Эта проблема имеет простое решение от systeminternals под названием pagedefrag, ее можно бесплатно загрузить, которая может дефрагментировать заблокированные файлы (включая файл подкачки) при перезагрузке системы. Он также покажет вам текущий статус этих файлов.

Also be aware that file fragmentation is only a issue on spinning harddrives, its my understanding that if a file is fragmented on a SSD its not a preformance issue (A defrager on a SSD will only make it last shorter). The actual preformance loose greatly depends on how badly its fragmented and your system hardware (seek time on the harddrive and how often the system has to hit the page file), but considering how easy it is to remove this problem it should be a none issue.

Links: MSDN on pagefile Mark Talking about Virtual memory (Pagefile)

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

Я придумал несколько длинных аналогий, но решил пощадить вас - если я не передумаю:)

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

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

Для респондента, который рекомендовал "пользователям просто нужно" закрыть некоторые приложения: Bzzzzzt!! Неправильный ответ в любом контексте.

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

Любые деньги, потраченные на дефрагментатор, который может обрабатывать файлы подкачки, лучше тратить на оперативную память. Удивительно, насколько бесполезным становится файл подкачки при обновлении машины с 256 МБ ОЗУ до 2 ГБ!

Ваш HD должен быть сильно фрагментирован для любой реально наблюдаемой потери звука, но, тем не менее, теория остается верной. Обоснование заключается в том, что вы помещаете файл подкачки на самый быстрый диск (по понятным причинам) и храните его в непрерывном физическом месте, чтобы время поиска не приходило на ум. Для сервера или рабочей станции энтузиастов это имеет смысл; для типичного офисного ПК с настройкой одного диска / одного раздела у вас нет опции "самый быстрый диск", и у вас всегда будет время поиска при перемещении головок между реальными файлами и файлом подкачки, так что это скорее миф есть.

Вы должны различать внутреннюю и внешнюю фрагментацию:

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

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

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

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

Что касается "свободных дисков", то, что вы думаете, что мы делаем со всеми этими старыми 8 ГБ жесткими дисками, которые лежат в офисе?;) В противном случае да, оперативная память дешева (для настольных компьютеров) в наши дни, во всяком случае, и является наилучшим вариантом.

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

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

Другие вопросы по тегам