> man operating_systems
Настройка параметров виртуальной памяти и дискового кэша
Сбрось память на диск!
на Среда, 07 Июль 2004, 17:03
добавил: Игорь Лейко список авторов печатать элемент контента создать pdf-файл  элемент контента
категория Статьи > Windows
комментарии: 0
просмотров: 8873


Беседа с разработчиками
Пользователь Windows 98: - многих смущает необычное поведение файла подкачки по сравнению с Windows 95. Например, его увеличенный размер и повышенная активность. Не мог бы кто-нибудь дать квалифицированне разъяснения?

Разработчик: - чтобы уменьшить количество случаев, когда во время активной работы системы необходимо изменить размер файла подкачки, мы внесли два изменения по сравнению с Windows 95.

<ol>
<li>Файл подкачки увеличивается ступенями не по 512 Кб, а по 4 Мб. Размер приложений за последние годы сильно вырос, и мы не однажды наблюдали, как во время загрузки всего лишь одного приложения файл подкачки увеличивался неоднократно. Приращение файла подкачки ступенями по 4 Мб также уменьшает фрагментированнсть файла подкачки (система старается сделать непрерывным каждый 4 Мб кусок, а не 512 Кб, как раньше). А это способствует и повышению быстродействия.</li>
<li>Если после закрытия одного или нескольких приложений размер файла подкачки оказывается больше необходимого в данный момент, система ждет 2 минуты, а не 45 секунд, прежде чем приступить к уменьшению размера файла. Ведь весьма возможно, что пользователь закрыл приложение только потому, что хочет работать в другом и запустит его.</li>
</ol>

Сердитый пользователь: - не обижайтесь, но Ваше утверждение о двух изменениях не совсем правильно. Windows 98 выделяет под файл подкачки больше места, чем требуется в данный момент. Windows 95 же этого не делает.

Я не испытываю проблем с увеличением файла подкачки блоками увеличенного размера. И двухминутный интервал ожидания - тоже не проблема. Проблема в том, что Windows 98 выделяет файлу подкачки на 20-50 мегабайт больше, чем нужно. И эти мегабайты не используются!

В моей машине - 96 Мб ОЗУ, а диспетчер памяти все равно при загрузке системы создает двадцатимегабайный файл подкачки. А потом еще начинает увеличивать и снова уменьшать его в процессе работы.

ЗАЧЕМ??? В моем случае файл подкачки не нужен вообще! Я абсолютно точно знаю это, поскольку система прекрасно работает и при отключенной виртуальной памяти.

Все запросы на выделение памяти делаются программами, работающими в данный момент. И делаются либо явным образом, либо косвенно, путем обращения к другим файлам, таким как DLL, DAT и пр. Лишь очень немногие приложения действительно требуют наличия файла подкачки.

Я слышал, что в процессе разработки Windows 98 разработчики испытывали затруднения в организации управления памятью. Но я думаю, что только из-за того, что некто решил заново изобрести колесо, на этот раз некруглое. А теперь никто не может объяснить, почему оно плохо катится.

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

Второй разработчик: - Я хотел бы уточнить, что Windows 98 не рассчитана на работу с отключенной виртуальной памятью и последствия такого отключения непредсказуемы. Это вовсе не означает, что система сразу перестанет работать. Работать она будет, но до некоторого момента. Невозможно предсказать, где и как проявит себя отключение виртуальной памяти. (Замечание автора статьи: известны случаи, когда после отключения виртуальной памяти пропадал звук. После создания файла подкачки фиксированного размера в один мегабайт все приходило в норму).

Разработчик: - к сказанному ранее добавлю, что при завершении работы Windows 98 мы не уменьшаем файл подкачки до минимально необходимого значения, а оставляем его таким, как есть. А теперь давайте обсудим некоторые нюансы поведения системы, касающиеся отключения виртуальной памяти и логики работы диспетчера памяти.

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

Если у вас 96 Мб ОЗУ и вы используете лишь одно или два приложения, тогда необходимость такой выгрузки вряд ли когда-нибудь возникнет. Но в какой момент следует резервировать место в файле подкачки на случай возникновения такой необходимости? После ее возникновения? А вдруг к этому моменту на диске не останется свободного места? Тогда единственным выходом будет аварийное завершение работы приложения.

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

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

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

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

Второй разработчик: - предыдущий ответ не совсем полон. Главный его недостаток - ничего не говорится о дисковом кэше. Приложениям, которые запускает пользователь, вполне хватает 96 Мб памяти, раз система работает с отключенной виртуальной памятью. И если количество распределенной виртуальной памяти меньше, чем физической, то, конечно, прямой необходимости в файле подкачки нет. Единственная причина, по которой система в этих условиях все же использует файл подкачки - то, что, как мы обнаружили, система работает лучше, если часть виртуальной памяти (не используемая в данный момент) выгружена в файл подкачки, чтобы освободить физическую память для дискового кэша, повысив тем самым его эффективность.

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


Приведенное выше обсуждение состоялось, когда разработка Windows 98 еще не была завершена. Вероятно, поэтому никто не упомянул параметр ConservativeSwapfileUsage. Но о нем мы поговорим позже.



© OSRC.info, 2004-2010.
Авторские права на любые материалы, авторы которых явно указаны, принадлежат их авторам. По вопросам публикации таких материалов обращайтесь к авторам.
Авторские права на любые другие материалы принадлежат OSRC.info.
Сайт является помещением библиотеки. Копирование, сохранение на жестком диске или иной способ сохранения произведений осуществляются пользователями на свой риск.
При использовании материалов сайта ссылка на OSRC.info обязательна.