Архив рассылки за июль-август 1999 года


№ 26 

       Уточнение к выпуску 22.
   Как оказалось, я был слишком оптимистичен в оценках работы программ для ДОС в среде Windows 95/98. Количество файлов, открываемых такими программами, не может превышать числа, заданного в параметре Files в файле Config.sys. Дмитрий Градсков привел мне пример программы, отказывающейся работать при малом значении параметра. Программа из трех строчек на Бэйсике наглядно это ограничение подтвердила. Так что если вам надо открывать в программе для ДОС много файлов, то увеличивайте значение параметра Files (при его максимальном значении расход памяти увеличивается примерно на 10 килобайт). Или создавайте локальные заголовки файлов в сеансе ДОС перед выполнением программы, для чего можно использовать программу Files, которую я встречал в пакете QEMM.
Windows 3.x с помощью специального параметра могла создавать дополнительные локальные заголовки файлов в сеансе ДОС, но в Windows 95/98 этот параметр не работает. 


Настройка параметров виртуальной памяти и дискового кэша

   Можно без преувеличения сказать, что оптимальная настройка виртуальной памяти и дискового кэша - одна из наиболее непонятных для пользователя областей. Множество рекомендаций кочует из одной журнальной статьи в другую, оттуда в книги, из книг - на страницы Интернета, а оттуда - снова в журналы. Причем некоторые из них остаются неизменными чуть ли не со времен Windows 3.0. В чем заключается выигрыш от применения таких рекомендаций или не объясняется вовсе, или объясняется поверхностно, исходя из общих соображений и без учета того, как данное изменение параметров скажется на системе в целом.

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

   Итак, вот несколько распространенных советов (с обычно даваемыми пояснениями). Применяя некоторые из них, вы c легкостью можете ухудшить работу Windows 98.

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

   Совет 2. Выделите часть диска в отдельный раздел и используйте его только для файла подкачки. Это исключит фрагментацию файла подкачки и увеличит скорость работы.
Примечание: гарантирует снижение производительности.

   Совет 3. Сделайте минимальный и максимальный размер файла подкачки примерно в три раза больше, чем объем ОЗУ. Windows не будет тратить время на его увеличение или уменьшение, и скорость работы повысится за счет этого и за счет исключения фрагментации файла подкачки.
Примечание: при большом объеме ОЗУ приводит к неэкономному расходованию места на диске, при малом - может воспрепятствовать запуску новых задач, если вся виртуальная память будет уже распределена.

   Совет 4. Ограничьте максимальный размер файла подкачки, чтобы Windows 98 не "раздувала" его попусту.
Примечание: может воспрепятствовать запуску новых задач, если вся виртуальная память будет уже распределена.

   Совет 5. Ограничьте размер дискового кэша с помощью параметров в файле System.ini, задав минимальный размер 2 МБ, а максимальный - 4-6 МБ. Windows не будет расходовать на кэш много оперативной памяти, что уменьшит потребность в использовании файла подкачки.
Примечание: может резко снизить эффективность дискового кэша в случаях, когда запущено несколько больших приложений. Особенно бессмысленно использовать этот совет в Windows 98.

   Чтобы вам стало ясно, почему следование этим советам снижает эффективность работы Windows 95/98, расскажем об особенностях использования виртуальной памяти и дискового кэша в этой ОС.
Сначала изложим объяснение работы виртуальной памяти в общем. Когда запускается какое-либо приложение, ему выделяется некоторое количество оперативной памяти. Эта память выделяется блоками (обычно их называют страницами), и в специальной области памяти ведется таблица, учитывающая все выделенные страницы. Когда для загрузки очередного приложения памяти уже не хватает, часть страниц, которые выделены приложениям, простаивающим в данный момент, или менее важным, чем текущее (имеющим меньший приоритет), записывается на диск, о чем делается пометка в таблице распределения страниц.

Замечание Размер страницы памяти определяется аппаратной реализацией процессора. В процессорах семейства х86 этот размер равен четырем килобайтам.

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

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

   В однопользовательской же операционной системе, которой преимущественно является Windows 98, такой алгоритм работы оказывается неоптимальным. Цель, стоящая перед Windows 95/98, совсем иная: не обеспечение максимальной загрузки процессора для наиболее полного использования его вычислительной мощности, а создание наибольших удобств для пользователя, то есть в первую очередь минимизация времени, требующегося на переключение между задачами, естественно, не за счет существенного замедления работы задач.

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

   Чтобы ускорить переключение между приложениями и запуск новых, в Windows 95/98 используются следующие приемы.

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

   К типу LE относится подавляющее большинство программ написанных для 32-разрядных ОС cемейства Windows (NT, 95, 98). Программа Where.exe, имеющаяся на компакт-диске Windows 98 (о ней, возможно, я расскажу в одном из ближайших выпусков) сообщает о них, как об имеющих тип "NT".

   Дополнительную экономию памяти можно получить, скомпоновав файл программы так, чтобы все секции кода начинались на границе, кратной 4 КБ. Для файлов Windows 98 и Office 2000 это условие выполнено еще при компиляции. Более старые программы необходимо обработать программой WinAlign. Об этой программе и о том, за счет чего достигается выигрыш, возможно, будет рассказано в одном из следующих выпусков.

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


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

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

   Системный монитор может показать количество таких двояко используемых страниц и тем самым помочь определить, какая часть дискового кэша занята программами. У меня этот показатель колеблется от 300 до 800 страниц, обычное значение - 500-600 страниц (т.е. 1,2-3,2 МБ и 2-2,4 МБ соответственно). В ваших условиях количество таких страниц может быть другим. Но очевидно, что уменьшение минимального размера кэша до двух мегабайт почти наверняка сделает кэш неэффективным.

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

   В этих условиях увеличение скорости чтения из файла подкачки даст лишь незначительный прирост скорости. К тому же надо учесть, что данные в самом файле подкачки фрагментированы, то есть система использует первый попавшийся свободный участок в файле, и отдельные страницы памяти, принадлежащие какой-либо программе, могут оказаться разбросанными по всему файлу подкачки (наподобие фрагментированного файла, разбросанного по всему диску). И умеренная фрагментация файла подкачки практически не изменит времени, требующегося на подкачку страниц в память. Windows 98 увеличивает файл подкачки ступенями по 4 МБ, стремясь при этом, чтобы каждый такой участок был непрерывным. Этой меры обычно оказывается достаточно для того, чтобы непрерывный файл подкачки практически не имел преимущества в скорости по сравнению с файлом, создаваемым обычным способом.

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

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

   Несколько слов о том, как определить, какой размер файла подкачки вам нужен. Часто предлагаемая формула "трехкратный размер оперативной памяти" основана на особенностях использования виртуальной памяти в Windows 3.x, но не в Windows 95/98. Поэтому поступите следующим образом. Запустите системный монитор, добавьте показатель Размер файла подкачки и установите интервал времени обновления в 10 минут. Проработайте с запущенным монитором весь день и посмотрите, какой размер принимал файл подкачки. Теперь установите для файла подкачки такой минимальный размер, который оказался бы достаточен для работы в течение 90-95 процентов времени. Максимальный размер не устанавливайте (укажите размер, соответствующий количеству свободного места на диске), чтобы не столкнуться с сообщением о нехватке памяти для запуска программ.

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

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

   Существует еще одно различие между Windows 95 и 98. Первая из них при завершении работы уменьшает размер файла подкачки до минимума, а после запуска вновь его увеличивает. Windows 98 этого не делает. Причина достаточно очевидна. Во время разработки Windows 95 программы для ДОС были еще весьма распространены, а размеры дисков - не слишком велики. Чтобы при работе в режиме ДОС (или в старой версии ДОС) место на диске не терялось напрасно, файл подкачки решили уменьшать. К моменту появления Windows 98 необходимость в экономии места на диске для режима ДОС отпала. Как из-за того, что размеры дисков значительно выросли, так и из-за того, что на подавляющем большинстве компьютеров режим ДОС уже не использовался. Поэтому для уменьшения времени загрузки и завершения работы было решено отказаться от уменьшения размера файла подкачки при выходе из Windows. Зачем делать дурную работу, ведь этот файл все равно потребуется увеличить при следующем включении компьютера.

   Еще один совет: если у вас установлен дисковод компакт-дисков, не уменьшайте размер его кэша, чтобы сэкономить память. Вы сэкономите не столько оперативную, сколько виртуальную память, то есть место в файле подкачки. Дело в том, что кэш компакт-дисков в Windows 95/98 является выгружаемым. То есть если он не используется, а память, которую он занимает, требуется другим программам, то он вытесняется в файл подкачки. При обращении к компакт-диску кэш снова загружается в память.

   Если вам остро не хватает места на диске, то, возможно, вы сталкивались с ситуацией, когда файл подкачки занимал все свободное место и некуда было сохранить результаты работы. В этом случае вам поможет строка
MinUserDiskSpace=количество_килобайт
добавленная в раздел [386Enh] файла System.ini. После этого Windows будет оставлять на диске свободное место указанного размера, ограничивая увеличение размера файла подкачки.   


№ 27

   Сначала новость. В Интернет просочились сведения о том, что Майкрософт начала работу над новой версией массовой (или настольной, как она это называет) операционной системы. Кодовое название разработки - Миллениум (в переводе - тысячелетие). Журналисты, как всегда, на костяк из верной информации нагромоздили свои домыслы и сообщили, что эта версия - дальнейшее развитие Windows 9x, но, однако, она не базируется на ДОС и не использует 16-разрядные модули. Эти два утверждения, конечно, не могут быть верными одновременно.

   Ориентировочным сроком выхода те же журналисты называют середину будущего года. Трудно сказать, насколько достоверной является их информация. Тем более, что начало работ вовсе не означает обязательного выхода этой ОС в свет. Достаточно вспомнить "Нэшвилл" - проект, над которым "Майкрософт" работала в 95-96 годах. От него отпочковались в самостоятельные продукты четвертая версия IE и "Аутлук", но многие принципы, заложенные в бета-версии "Нэшвилла", реализовались лишь в "Мемфисе" - Windows 98.


      Небольшое уточнение к предыдущему выпуску.

   Я надеюсь, вы поняли из текста выпуска, что пять советов, которые в нем перечислены, даю не я. Наоборот, я считаю, что их использование может замедлить работу Windows.

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

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

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

   На самом деле разница в скорости работы объяснялась не увеличением и уменьшением размера файла подкачки. Эти процедуры занимали довольно мало времени и выполнялись, в основном, при запуске и завершении работы программ. С постоянным файлом подкачки система работала в обход подпрограмм обслуживания дисков, записанных в ПЗУ компьютера (BIOS). Доступ к временному файлу подкачки осуществлялся через эти процедуры (если такие процедуры вынуждена использовать Windows 95/98, на вкладке Быстродействие появляется сообщение "Страничный обмен в режиме MS-DOS снижает быстродействие").

   Windows 95 и 98 используют временный файл подкачки, но обращаются к нему в обход процедур ДОС и BIOS. Для них это нормальный режим работы с диском. Создать в этих системах постоянный файл подкачки невозможно. Хотя они и могут использовать постоянный файл подкачки, оставшийся от Windows 3.x, но используют его как временный. Можно создать файл подкачки постоянного размера, задав для него одинаковые верхнюю и нижнюю границы, но постоянным он от этого не станет.

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

   Теперь описание обещанного эксперимента. Возьмите файл какой-нибудь небольшой программы для ДОС, например редактор Edit, находящийся в папке Command. Откройте окно свойств этой программы и установите очень большие требования (32 768 КБ) к дополнительной (XMS), отображаемой (EMS) памяти и памяти ДОС расширенного режима (DPMI). Если вы установили файлу подкачки постоянный размер, уберите верхнюю границу и перезагрузите компьютер.
Запустите системный монитор и задайте отслеживание загрузки процессора и размера файла подкачки и обновление информации через одну секунду. Теперь запустите программу для ДОС, свойства которой вы устанавливали, и посмотрите, много ли времени потребовалось системе на увеличение размера файла подкачки. Если вы задали довольно большой минимальный размер этого файла, то, возможно, придется запустить не одну, а несколько копий программы, прежде чем система увеличит его размер.

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

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


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

   Самым первым в Windows был включен пасьянс "Косынка малая" (Klondike). Поскольку других пасьянсов в Windows не было, то, не мудрствуя лукаво, его так и назвали: "Пасьянс" (Solitaire). В Windows 95 появился еще один пасьянс. Его английское название - FreeCell. В английской версии "косынка" осталась под общим названием "Solitaire", а FreeCell попал в меню под своим собственным названием. В русской версии все оказалось иначе. "Косынка" получила свое имя, а для FreeCell решили использовать буквальный перевод английского названия, "свободная ячейка". Вероятно, локализаторам было лень выяснять, как этот пасьянс называется по-русски. А ведь он известен в России уже более ста лет под названием "солитер", от французского слова solitaire, означающего "крупный бриллиант, вправленный в ювелирное изделие отдельно, без других камней ". И только в Windows 98 "солитер" получил свое настоящее имя.


№ 28

   На прошлой неделе ушла в печать русская версия второго издания Windows 98. В свойствах компьютера она идентифицирует себя как "Windows 98 второе издание 4.10.2222 А". Буква А означает, что это первая модернизация исходной версии. Ожидаемое появление в продаже – через месяц-полтора.    Русская же версия двухтысячного офиса ушла в печать еще в июле, и на середину сентября намечено ее представление прессе. Возможно, что в продаже она появится еще раньше.
  Первое издание моей книги "Осваиваем Windows 98" (о ней см. на моей страничке) благополучно распродано, что весьма кстати, ибо в ближайшее время должно будет выйти второе издание - "Осваиваем Windows 98 и Windows 98 второе издание". Как говорится, "спрашивайте в аптеках города".   Почему я это пишу? Уж больно много всяких глупостей я вижу в книгах, написанных o Windows 98. Например, как вам нравится такая фраза: "FAT 32 организована гораздо лучше, чем FAT 16. В ней каждому файлу выделяется по крайней мере один кластер".    А, открыв на днях книгу довольно известного технического писателя Роба Тидроу, я обнаружил рекомендацию не размещать файл подкачки на сжатом диске, поскольку сжатие данных, записываемых в этот файл, якобы снизит быстродействие системы. Хотя еще со времен Windows 95 во всей технической документации пишется, что файл подкачки, размещенный на сжатом диске, помечается как не подлежащий сжатию. И что различий в скорости работы при размещении файла подкачки на сжатом и несжатом диске нет. Вот такие пироги...

Назад

На главную страничку