Показать полную графическую версию : [решено] Файл подкачки (все вопросы)
Villy2011
25-11-2013, 05:12
Это достойно нобелевской премии мира! »
Думаете? К сожалению, не я это придумал, такой совет по ускорению системы нередко можно встретить в интернете. Более того, я подтверждаю, что перенос файла подкачки с медленного жесткого диска на рамдиск действительно ускоряет систему, по-моему это очевидно, у меня пропали несколько-секундные задережки-тормоза, когда Windows приходится считывать большой объем информации со свопа.
Создайте по файлу подкачки на каждом физическом диске »
Вы большой мастер давать неприменимые советы)). Вы, в принципе, можете давать один единственный совет по оптимизации, что-то типа: "Купите себе компьютер с несколькими SSD-дисками большой емкости, с оперативной памятью побольше, желательно 32 ГБ, и не задавайте на форуме глупых вопросов"
Если вы не хотите этого делать, не делайте, но тогда и не повторяйте по третьему кругу одни и те же вопросы... »
Вообще-то у меня был изначально один вопрос - я попросил объяснить разницу в названиях памяти, отображаемые Process Explorer'ом. Спасибо Игорю Лейко за ответ и разъснения. Далее - простое обсуждения различных нюансов. Если вы считаете это офф-топом, то я согласен это прекратить.
К сожалению, не я это придумал, такой совет по ускорению системы нередко можно встретить в интернете. »
А уж сколько советов убиться об стену, вложить деньги в пирамиду... Всем ли советам в интернете надо следовать, все ли они полезные?
огда Windows приходится считывать большой объем информации со свопа. »
Если памяти достаточно, последние винды не свопятся. ХР по привычке свопится на ровном месте при наличии хоть 7ГБ свободной памяти, ну да там проще отключить своп.
Вы большой мастер давать неприменимые советы)). »
У меня 3 ЖД и один SSD. И не для файлов подкачки, а просто нужен большой объём дисковой системы.
LehaMechanic
25-11-2013, 08:19
Думаете? К сожалению, не я это придумал, такой совет по ускорению системы нередко можно встретить в интернете. »
Но вы же должны понимать, что это бредовый замкнутый круг? Винде не хватает памяти на что-то, и она начинает скидывать лишнее в файл подкачки. А файл подкачки занимает (sic!) оперативную память, которой не хватает, и которая перемещается в файл подкачки, который занимает оперативную память, которой... Ну вы поняли или нет?
Цитата Vadikan:
Создайте по файлу подкачки на каждом физическом диске »
Вы большой мастер давать неприменимые советы)). Вы, в принципе, можете давать один единственный совет по оптимизации, что-то типа: "Купите себе компьютер с несколькими SSD-дисками большой емкости, с оперативной памятью побольше, желательно 32 ГБ, и не задавайте на форуме глупых вопросов" »
Это хамство и нарушение ОПК 3.1. Ведь совет применим к любой конфигурации, а сформулирован он так, потому что у вас конфигурация в профиле не указана. А это нарушение правил форума Windows 7. У вас сутки на исправление обоих нарушений.
Villy2011
25-11-2013, 13:04
У вас сутки на исправление обоих нарушений. »
Конфигурацию указал, по поводу второго нарушения, я что-то не понял, что вы имеете ввиду.
Что касается сабжа, то неужели вы думаете что давая стандартнейший ответ "выставить размер файла подкачки по усмотрению системы", который я первым делом прочитал на сайте Microsoft, перед тем как начать свои эксперименты со свопом, вы тем самым отвечаете на мой вопрос и помогаете решить мою задачу? У меня этот размер "по усмотрению системы" (усмотрение заключалось в создании на системном диске файла подкачи равного размеру оперативной памяти) стоял больше года, пока тормоза меня окончательно не достали и я не начал думать как от них избавиться. Вариантов два - а) физически поменять жесткий диск и б) решить программно.
Первый вариант мне не подходил, поэтому я перешел ко второму. Первым делом я открыл монитор ресурсов и посмотрел, какие службы постоянно обращаются с диску. Хоть выше и утверждали, что в последних версиях Windows не пишет постоянно в своп, но это не так. Windows 7 начинает скидывать инфу в своп чуть ли не сразу после запуска, имея в распоряжении несколько гигабайт свободной памяти. Но кроме свопирования, индексирования и службы восстановления (что было в XP), в Win7 еще добавили службу поиска, защитника Windows и по-моему есть еще что-то, я пока не вычислил, что любит пошуршать диском.
Я, конечно, понимаю, что для системы пользователь только мешает, у нее и без него есть очень важные занятия, типа индексирования или проверки на вирусы. Но я считаю (понимаю, что не прав), что пользователь все же главнее, поэтому поодключал нафик ненужные службы, после чего осталось разобраться со свопом. В принципе, правильнее его было вообще отключить, но наученный горьким опытом XP, что без свопа Windows существовать не может, решил его оставить переместя в память. Там я его и собираюсь оставить, поскольку тормоза, связанные с ЖД, исчезли, а это главное. А контролировать объем используемой памяти не сложно - как я выяснил значительную часть расходуют 32-битные браузеры Firefox и Chrome, поэтому не запуская одновременно больше двух браузеров можно не доводить систему до критического состояния.
Ну и теперь, уважаемый Vadikan, попробуйте еще раз ответить на вопрос, каким образом вы советом "установить размер файла подкачки по усмотрению системы" помогли мне решить проблему? Да я ведь собственно изначально спросил только об отличиях в определениях памяти, понимая, что на вопрос о свопе получу стандартный ответ, но позже все же подумал, что здесь могут быть пользователи, не только наученные давать стандартные ответы Microsoft, поэтому и задал вопрос об оптимальном размере свопа в моем случае. Сейчас понимаю что это не так и признаю свою ошибку. На этом дискуссию предлагаю завершить.
Dzirt2005
25-11-2013, 13:29
У меня этот размер "по усмотрению системы" (усмотрение заключалось в создании на системном диске файла подкачи равного размеру оперативной памяти) стоял больше года, пока тормоза меня окончательно не достали и я не начал думать как от них избавиться. »
И вы конечно же с ходу определили (это же даже школьнику известно, да?), что ваши тормоза происходят исключительно из-за того, что файл подкачки делается "по усмотрению системы"? Да вам надо надо вторую Нобелевскую премию давать! Все циганки просто нервно курят в сторонке... :laugh:
Villy2011
25-11-2013, 14:07
Dzirt2005, если вы не знаете как это делается, могу рассказать, Нобелевской премии (2-й раз уже предлагают) не нужно. Видите активность жесткого диска (у меня, например, лампочка загорается), открываете Монитор ресурсов, у меня открывается автоматически на вкладке Диск. Самая первая строчка - это будет процесс, который больше всего загружает диск, выбираете его галочкой. В нижнем окне будут отображены файлы, к которому обращается данный процесс (пишет или читает). Ничего сложного, и без цыган :)
На этом дискуссию предлагаю завершить. »
Завершайте, а я отвечу :)
Что касается сабжа, то неужели вы думаете что давая стандартнейший ответ "выставить размер файла подкачки по усмотрению системы", который я первым делом прочитал на сайте Microsoft, перед тем как начать свои эксперименты со свопом, вы тем самым отвечаете на мой вопрос и помогаете решить мою задачу? »
Да, я так думаю, причем по двум причинам:
1. Я понятия не имею о том, что вы там где-то что-то первым делом прочитали и попробовали. См. также Отсутствуют подробности о действиях по устранению проблемы (http://www.outsidethebox.ms/13148/#_Toc314611153)
2. Реализованное у вас решение не просто неэффективно, но и усугубляет проблему. Вам об этом не только я тут говорю.
Но я считаю (понимаю, что не прав), что пользователь все же главнее, поэтому поодключал нафик ненужные службы »
Главнее - да. Разбирается в работе ОС лучше ее создателей - вряд ли ↑ ↓
В принципе, правильнее его было вообще отключить »
Нет, не правильнее, потому что у вас недостаток памяти для ваших задач.
но позже все же подумал, что здесь могут быть пользователи, не только наученные давать стандартные ответы Microsoft, поэтому и задал вопрос об оптимальном размере свопа в моем случае »
И вы его получили! Но разве мог я представить, что стандартные рекомендации вы автоматически отклоняете в грубой форме, потому что они стандартные, даже если они оптимальны для вашего случая. Зато редкое изврашение в виде ФП на RAM-диске вам ласкает слух и греет душу, да так, что система даже начинает быстрее работать.
по поводу второго нарушения, я что-то не понял, что вы имеете ввиду. »
Тогда придется вас забанить, вот и все.
И да, купите себе больше памяти и SSD, потому что программного решения вашей проблемы не существует :)
severagent007
26-11-2013, 09:53
Villy2011, первое - как используется комп? какие проги работают? У тебя наверняка нехватка памяти или утечка памяти, причём тут своп? Своп при нехватке физ. памяти не даёт системе зависнуть или выпасть в бсод, и система будет работать медленно! Первое решается покупкой планки(ок)памяти, вторая - программно, руками, но решение может быть опять таки замена битой памяти! Фотошоперы, например не мучают своп, и ставят 16-32 гига оперативки.
у него утечка, commit исчерпан, а рам еще есть. Кто-то резервирует shereable память, но не комитит ее. Найти так просто нельзя, помоему только по хендлам утекшим. Могу на примере объяснить один из возможных вариантов происходящего, если кому-то интересно.
severagent007
27-11-2013, 08:41
Могу на примере объяснить один из возможных вариантов происходящего »
если можно...Efir,
Могу на примере объяснить один из возможных вариантов происходящего, если кому-то интересно »интересно. И нужно. А то в теме одно и тоже - удалить фп... уменьшить... переместить фп на компьютер врагу... сделать фп размером 1мб ... и т.д
severagent007,
... Фотошоперы, например не мучают своп...
они только создают свой временный файл с которым работают.
Автор последнего диалога задавался вопросом, что такое доступная(available) память. Без технических подробностей, которые довольно таки сложны, память(озу), с точки зрения ее содержимого делится, на занятую, кэшированную, свободную и недоступную.
Занятая - это физически резидентное подмножество страниц, принадлежащее программному обеспечению. То бишь эта память выделена, ПО с ней работает, данные находятся в озу, а не в подкачке либо MMF файле.
Кэшированная память – это память, которая хранит недавно использованный программами контент, файлы например, либо файлы загруженные в озу суперфетчем. Память не является выделенной, но если программе понадобилось содержимое файла, который кэширован, операционной системе не придется осуществлять долгую операцию чтения с диска, ей всего лишь понадобится поправить пару структур и эта память вновь станет занятой и принадлежать программе. Есть детали, о них в другой раз.
Свободная память – это память, которая ни кому не передана и не содержит какого-либо полезного содержимого, либо обнулена.
Доступная память эта сумма памяти свободной + памяти кэшированной. Когда очередной программе нужна чистая память, операционная система выделяет ей эту память из свободной, то есть обнуленной. Если по какой-то причине обнуленной памяти не хватает, либо уже исчерпана, операционная система чистит кэшированную память и выделяет ее приложению.
Недоступная – эта та память, адреса для которой, заняты для адресации оборудования, либо сбойная память.
Немного теор. информации. С точки зрения выделения памяти, она может быть невыделенная, зарезервированная(reserve) и переданная(commited). Слово переданная идет из выражения передача физического хранилища. Системных хранилищ два, - озу и страничный файл(pagefile.sys). Объем этих 2-х хранилищ составляет счетчик Commit Limit. Счетчик Current Commit показывает текущее значение использования этих 2-х хранилищ данными, которые больше нигде разместить нельзя, это важно. Счетчики представляют системный комит(System Commit), то есть передача системных хранилищ. Существует и третий тип хранилища, проецируемые в память файлы(MMF). ММF файлом может выступать любой файл на диске, используемый ПО через механизм MMF. Подробнее о нем можно почитать википедию. Суть его заключается в том, что доступ к файлу осуществляется как к памяти. На некоторый непрерывный участок виртуального адресного пространства программы проецируется любой файл или часть и когда программа начинает читать\писать эту память, файл или часть не загружается целиком, а прозрачно для программы загружаются в озу только те страницы файла или части, к которым был доступ. Теперь самое сложноусваиваимое)). MMF файлы не входят в счетчик System Commit Limit, т.к. их может быть условно бесконечное множество. Те данные, которые сейчас загружены в озу как MMF, не входят в Current System Commit, так как сам файл является хранилищем. В случае, если память под данные, которые были загружены в озу из файла, как MMF, придется освободить операционной системе для кого то, то эти данные будут скинуты снова в этот файл, либо просто память будет отобрана и обнулена, если данные не изменялись(только чтение) и вновь будут прочитаны из файла при повторном доступе.
Поскольку содержимое MMF может быть и полностью загружено в озу, а commit такой памяти на системный commit не влияет, то можно исчерпать всю озу, при этом Current Commit может быть, например, в 2 раза меньше лимита и часто вводит людей в ступор. Но в этом ничего такого нет, т.к. всю ту исчерпанную озу можно скинуть опять в MMF хранилища, тем самым освободив для других нужд.
Пока писал этот пост, выяснилось, что в принципе нельзя точно сказать утечка у пользователя Villy2011 или нет, а также выснилось, что изложить этот сложнейший материал просто не получается)), да еще и простым языком.
Во вложении к посту есть программа testmem, с исходными кодами на си. Ее написал когда-то братуха, когда изучали memory management в венде. Она осуществляет несколько типов выделений памяти, объем которых можно указать в МБайтах. Исполняемых файлов 2, - 64-х разрядный для того, чтобы выделения памяти не были ограничены виртуальным адресным пространством и 32-х разрядный, чтобы показать как из-за нехватки виртуальных адресов может происходить утечка памяти, о которой была речь выше и которая может привести к ситуации как у Villy2011. Помимо testmem нужен будет еще Process Explorer и VmMap, а также установленный фиксированный размер страничного файла, чтобы система не увеличивала страничный файл, тем самым отодвигая Commit Limit.
Делаем 4 теста.
1. Смотрим как растет Current System Commit при этом доступная(available) память остается прежней.
2. Смотрим как растет Current System Commit при этом доступная(available) память уменьшается.
3. Смотрим как уменьшается доступная(available) память при этом Current System Commit остается прежним.
4. Смотрим как данные по памяти testmem в программах, включяя VmMap, никак не меняются, хотя Current System Commit растет. Утечка.
Тест 1. Запускаем 64-х разрядный testmem, выбираем commit shared memory(pagefile), в поле объем вводим 1000Мб, жмем ок несколько раз и наблюдаем рост Current System Commit до того момента пока система не напишет нехватка памяти. Последний блок в зависимости от текущего выделения на вашей системе может быть не кратен 1000Мб, поэтому введите остаток.
Тест2. Запускаем 64-х разрядный testmem, выбираем commit and touch memory, в поле объем вводим 1000Мб, жмем ок и наблюдаем рост Current System Commit и уменьшение доступной памяти(рост Physical Memory)
Тест3. Запускаем любой testmem, выбираем commit shared memory(mapped file), в поле объем вводим 1000Мб, жмем один раз ок и наблюдаем уменьшение доступной памяти(рост Physical Memory) при неизменном Current System Commit.
Тест4. Запускаем 32-х разрядный testmem, выбираем commit shared memory(pagefile), потом запускаем VmMap и видим данные по памяти testmem. Нажимаем один раз ок, наблюдаем рост Current System Commit на этот объем, после чего обновляем VmMap и видим как появилось 1000МБ в поле Shereable. Снова нажимаем ок, снова наблюдаем рост Current System Commit на этот объем, после чего обновляем VmMap и видим что другого блока из 1000Мб не появилось. Можно нажать еще раз пока не дойдете до Commit Limit, но памяти так в программе и не появится. Это и есть утечка. Ловить такую очень сложно, точнее долго.
Что делает каждый из этих кусков кода по выделению памяти подробней расскажу в другой как-нить раз)
т.к. всю ту исчерпанную озу можно скинуть опять в MMF хранилища, тем самым освободив для других нужд. »
Вот только если файлы в памяти изменялись, их надо будет скинуть на диск. Так как винда при недостатке ещё будет пытаться свопится, то конкурентный доступ к диску может вызвать неилюзорное подвисание винды.
Отсутствие свопа может помочь тем, что не будет конкурентного доступа при освобождении памяти на диск, когда память кончится. Хотя при этом память кончится быстрее.
Я правильно рассуждаю?
Вот только если файлы в памяти изменялись, их надо будет скинуть на диск »
да, содержимое нужно переписать в файл, вопрос лишь в том, сколько этих модифицированных данных. Немодифицированных данных гораздо больше, соответственно это первый кандидат на вылет. Когда я писал процитированный вами текст, я говорил о том, что Current Commit может быть далек от Commit Limit при том, что озу занята полностью, часть из которых занимают проецируемые в память файлы подразумевая типичную ситуацию, когда данные на чтение превалируют над модифицированными. Если все же предположить что все те данные загруженные в память как MMF модифицированы, нужно разбирать конкретную ситуацию, выделение памяти это еще не значит ее реальное использование, операционная система подсовывает рам лишь тогда, когда к ней реально был доступ, тобишь передача физического хранилища, это по факту лишь его резервация, но не обладание. В программе testmem, в прикрепленном выше посту, есть два выделения, - commit и commit and touch, которые как раз и демонстрируют то, о чем говорил в предыдущем предложении. Если все же добавить к ситуации с модифицированным данными и запрос на загрузку данных с подкачки, то да, система деградирует.
Отсутствие свопа может помочь тем, что не будет конкурентного доступа при освобождении памяти на диск, когда память кончится. Хотя при этом память кончится быстрее.
Я правильно рассуждаю? »
Отсутствие подкачки в контексте вашего вопроса ничем не поможет, т.к. деградация системы не приведет к потере данных, а отсутствие страничного файла может вызвать крах. Во многом эффективное использование памяти зависит от приложений и создать ситуацию нехватки ресурсов несложно, вопрос лишь в той самой эффективности или недостаче аппаратных ресурсов.
т.к. деградация системы не приведет к потере данных, »
Ну да, я не писал, что система рухнет. Просто будет висеть, пока не расчистит память.
а отсутствие страничного файла вызовет крах »
Это если память не удастся расчистить.
В моём варианте её будет достаточно, если сбросить файлы MMF на диск. При этом если будет подкачка, то она скорее будет мешать сбрасывать MMF на диск, и система виснуть будет дольше.
Игорь Лейко
28-11-2013, 23:13
это память, которая ни кем не выделена »
Слово "выделена" (commit) в данном контексте использовать некорректно, этот термин используется для другого процесса и другой характеристики (см. значения "выделено" в диспетчере задач).
Отсутствие свопа может помочь тем, что не будет конкурентного доступа при освобождении памяти на диск, когда память кончится. »
Нет, скорее всего, подкачка будет протекать интенсивнее, увеличивая нагрузку на диск.
Слово "выделена" (commit) в данном контексте использовать некорректно, этот термин используется для другого процесса и другой характеристики (см. значения "выделено" в диспетчере задач). »
для какого процесса и характеристики? не совсем понял. Если память находится во Free списках, она ни кем не выделена, какой нужно для этого термин использовать?
При этом если будет подкачка, то она скорее будет мешать сбрасывать MMF на диск, и система виснуть будет дольше »
вы говорите о крайней ситуации нехватки ресурсов, да и условия, при которых это случится, крайне маловероятны, поэтому ваше беспокойство о том, что наличие страничного файла помешает сбрасывать другое содержимое, выглядит надуманным. Хотя несомненно вам решать для себя важность тех или иных вопросов))
Нет, скорее всего, подкачка будет протекать интенсивнее, увеличивая нагрузку на диск. »
При отключённой подкачке она будет более интенсивна? Вы точно поняли, что я написал?
вы говорите о крайней ситуации нехватки ресурсов, да и условия, при которых это случится, крайне маловероятны, »
Ну да.
Вот только если файлы в памяти изменялись, их надо будет скинуть на диск. Так как винда при недостатке ещё будет пытаться свопится, то конкурентный доступ к диску может вызвать неилюзорное подвисание винды »
кстати в качестве эксперимента, откройте на своем компике RamMap и посмотрите на вкладку Use Counts. Сколько у вас кешированных модифицированных MMF данных на текущий момент и сколько немодифицированных.
http://i01.overclockers.ru/exbzspazydk6h67iunvzcjg14wunzqlr/30jy9tlvpxxzhf6f.jpg
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC