|
Компьютерный форум OSzone.net » Клиентские ОС Microsoft » Microsoft Windows 7 » Разное - [решено] Файл подкачки (все вопросы) |
|
Разное - [решено] Файл подкачки (все вопросы)
|
(*.*) Сообщения: 36567 |
Прежде чем задать вопрос, пожалуйста, вникните в содержимое этого сообщения:
Дополнительные сведения О путанице понятий "система" и "загрузка" в оснастке управления дисками. |
|
Отправлено: 18:26, 01-11-2009 |
Ветеран Сообщения: 1186
|
Профиль | Отправить PM | Цитировать Цитата Efir:
Цитата Efir:
|
||
Отправлено: 08:41, 27-11-2013 | #311 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1958
|
Профиль | Отправить PM | Цитировать Цитата:
|
|
Отправлено: 11:10, 27-11-2013 | #312 |
Старожил Сообщения: 283
|
Профиль | Отправить PM | Цитировать Автор последнего диалога задавался вопросом, что такое доступная(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, но памяти так в программе и не появится. Это и есть утечка. Ловить такую очень сложно, точнее долго. Что делает каждый из этих кусков кода по выделению памяти подробней расскажу в другой как-нить раз) |
Последний раз редактировалось Efir, 04-01-2014 в 22:22. Отправлено: 00:41, 28-11-2013 | #313 |
Старожил Сообщения: 136
|
Профиль | Отправить PM | Цитировать Цитата Efir:
Отсутствие свопа может помочь тем, что не будет конкурентного доступа при освобождении памяти на диск, когда память кончится. Хотя при этом память кончится быстрее. Я правильно рассуждаю? |
|
Отправлено: 16:18, 28-11-2013 | #314 |
Старожил Сообщения: 283
|
Профиль | Отправить PM | Цитировать Цитата Psih-ya:
Цитата Psih-ya:
|
||
Последний раз редактировалось Efir, 29-11-2013 в 12:39. Отправлено: 19:14, 28-11-2013 | #315 |
Старожил Сообщения: 136
|
Профиль | Отправить PM | Цитировать Цитата Efir:
Цитата Efir:
В моём варианте её будет достаточно, если сбросить файлы MMF на диск. При этом если будет подкачка, то она скорее будет мешать сбрасывать MMF на диск, и система виснуть будет дольше. |
||
Отправлено: 19:43, 28-11-2013 | #316 |
Забанен Сообщения: 1368
|
Цитата Efir:
Цитата Psih-ya:
|
||
Отправлено: 23:13, 28-11-2013 | #317 |
Старожил Сообщения: 283
|
Профиль | Отправить PM | Цитировать Цитата Игорь Лейко:
Цитата Psih-ya:
|
||
Последний раз редактировалось Efir, 29-11-2013 в 13:24. Отправлено: 12:37, 29-11-2013 | #318 |
Старожил Сообщения: 136
|
Профиль | Отправить PM | Цитировать Цитата Игорь Лейко:
Цитата Efir:
|
||
Отправлено: 17:01, 29-11-2013 | #319 |
Старожил Сообщения: 283
|
Профиль | Отправить PM | Цитировать Цитата Psih-ya:
![]() |
|
Отправлено: 17:49, 02-12-2013 | #320 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Общее - [статья] Файл ответов (AutoUnattend.xml) .:[все вопросы, параметры, уточнения, etc]:. | Vadikan | Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista | 1736 | 06-05-2025 10:49 | |
Файл ответов Winnt.sif .:[все вопросы, уточнения, не срабатывает установка, etc]:. | Petya V4sechkin | Автоматическая установка Windows 2000/XP/2003 | 2071 | 03-07-2019 14:30 | |
Разное - Файл Подкачки (pagefile.sys) - .:[все вопросы]:. | ShaddyR | Microsoft Windows 2000/XP | 637 | 16-06-2018 11:47 | |
Установка - файл подкачки | sasa74 | Microsoft Windows Vista | 2 | 20-11-2009 00:04 | |
файл подкачки | shark21 | Хочу все знать | 1 | 13-02-2003 12:04 |
|