|
|||
|
|||
Как заставить программы работать еще быстрее? |
|||
Заранее предупреждаю, что
данная статья НЕ является руководством
на тему "еще один способ настройки Windows"
- это скорее описание скрытых от
невооруженного взгляда сторон нашей
любимой операционной системы, знание
которых и поможет нам выжать из детища MicroSoft
несколько дополнительных процентов
производительности. А уж выжать из
Виндов при желании можно довольно много.
Однако для того, чтобы добиться желаемого результата, нам потребуется кое-какой софт, а именно: Another Task Manager 2.1 (http://atm.idic.caos.it или http://web.tiscalinet.it/TbEnrHP)Cache Manager 3.70 FreeMem Pro 4.3 (http://www.meikel.com/freemem) Будем считать, что вы прочитали уже достаточно статей о том, как лучше настроить Windows и выполнили все их рекомендации: выкинули все лишнее из автозагрузки, установили фиксированный размер свап-файла, убрали обои - ну и так далее. Но быстродействия все равно не хватает - впрочем, его никогда не хватает, так что даже если пока у вас не возникло такой проблемы, она обязательно появится в ближайшем будущем. А уж производители кривого софта и дорогого железа постараются, чтобы это будущее наступило как можно скорее. Начнем с хорошо всем знакомой ситуации - программа, работающая настолько медленно, что ей невозможно пользоваться. Или программа, которая работает быстро, но все равно очень долго. Перемычки на плате нам уже не помощники - процессор разогнан так, что того и гляди вырвется из своего слота и начнет с мутным жужжанием летать по комнате. Казалось бы, все резервы скорости исчерпаны. Но на самом деле есть, есть возможность получить еще 5-10% производительности, хотя и не во всех случаях. Но для начала - небольшой экскурс в устройство мультизадачных операционных систем. В Windows для распределения машинного времени между задачами используется старая добрая система приоритетов (видимо, потому, что ничего лучше пока еще не придумали). Задачи с более высоким приоритетом получают больше машинного времени, с более низким - меньше. Ну а уж критичные по времени процессы - вообще получают все ресурсы в первую очередь. В свою очередь, каждый процесс состоит из одного или нескольких параллельно работающих потоков, причем у потоков тоже есть система приоритетов. Так вот, по умолчанию все создаваемые процессы при старте получают приоритет Normal, чего обычно вполне достаточно для большинства целей. Но когда возникает необходимость поднять приоритет задачи, чтобы ей доставалось больше времени процессора, стандартные средства Windows нам ничем помочь не могут - в составе дистрибутива этой ОС отсутствуют какие-либо средства управления приоритетами. Кстати, разработчикам приложений этот факт отлично известен, и в некоторые "тяжелые" приложения встроены средства управления распределением процессорного времени (к примеру, могут изменять собственный приоритет такие популярные программы, как WinRAR, JetAudio или WinAmp). Но что делать с теми приложениями, в которых такая фича отсутствует начисто? Вот тут-то нам и пригодится Another Task Manager. Первое, что мы увидим, запустив программу - это список процессов с подробными сведениями о них: приоритет, число потоков в процессе, потребление ресурсов процессора и многое другое. К сожалению, ATM показывает только имена EXE-файлов и полный путь к ним, ничего не говоря о том, какое именно приложение с этим файлом связано, поэтому Вам придется самим догадываться, что AVPM.EXE - это ни что иное, как AVP Монитор. Теперь выберем какой-нибудь процесс, у которого в поле Priority Class стоит надпись Normal (8), кликнув по нему мышкой. После этого в нижней половине экрана появятся еще более подробные сведения - причем теперь на них можно не только смотреть, но и активно вмешиваться во внутреннюю жизнь процесса. Например, на вкладке Process можно передвинуть ползунок - и тем самым изменить приоритет процесса, увеличив его или уменьшив. Если мы увеличим приоритет до RealTime - процесс получит максимум машинного времени, и кроме того увеличатся приоритеты всех потоков этого процесса. Теперь посмотрим на потоки - если у процесса их несколько, выберем тот, который потребляет больше всего ресурсов и поставим ему приоритет TimeCritical. Чего мы этим достигли? Результатом наших усилий стало то, что наиболее ресурсоемкая часть приложения теперь получила все процессорное время, какое только возможно. Так что не удивляйтесь, если вдруг вы обнаружите, что все остальные приложения остановились - процессорное время этим задачам теперь достается редко и совсем понемногу (обладатели софт-модемов, делайте выводы). И, наконец, ATM предоставляет совершенно уникальную возможность манипулировать приоритетом ядра процессора - опасное, но интересное занятие, вершина мечтаний профессионального "разгонщика Windows". Но будьте осторожны с назначением максимальных приоритетов - возможно, что в конечном итоге вам придется обратиться к комбинации Ctrl-Alt-Del, чтобы снять чрезмерно "разогнанное" приложение, отнимающее все ресурсы у других, не менее нужных программ. Теперь о том, чего можно достичь этим приемом - а достичь можно ощутимого роста производительности на некоторых приложениях. По результатам проведенного тестирования (использовалась система P166MMX\48Mb\S3Virge DX 4Mb с установленной Windows98SE) ускорение при работе программы Almanac 3.69 (пакет "тяжелых" астрономических алгоритмов) составило 6%; проверка директории WINDOWS при помощи антивируса DrWeb 4.17 удалось произвести на 10% быстрее. Однако наиболее эффектным был эксперимент с демо Overmind группы T-Rex: с обычным приоритетом некоторые участки работали довольно медленно (использовалась система с 3D-ускорением начального уровня), а в эпизоде со "звездой" на вершине горы смена кадров была настолько заметна, что портила общее впечатление от демо. После установки максимального приоритета прирост скорости был отлично виден невооруженным глазом и даже самые медленные участки демо работали плавно и с нормальной скоростью. Как показали эксперименты, наиболее ощутимый прирост производительности наблюдается при "разгоне" программ, выполняющих значительные объемы математических вычислений или обрабатывающих большие объемы данных, поэтому предлагаемый мной метод будет наиболее полезен при решении таких задач, как аудио- и видеокодирование, программный рендеринг сложных объектов и обработка больших объемов графики. А вот изменение приоритета для офисных приложений ощутимого эффекта не даст, поскольку эти программы мало загружают процессор (для CryptEdit 4.1, в котором набирается эта статья, коэффициент использования процессорного времени колеблется в районе 12%), для них более важен объем свободной физической памяти. Что еще можно делать при помощи Another Task Manager? Часть возможностей вряд ли представляет интерес для рядового пользователя, однако есть и другие, общедоступные и весьма полезные функции. Во-первых, это возможность практически мгновенно снимать зависшие задачи, не прибегая к Task Manager'у Windows, который в большинстве случаев снимает зависшую задачу не сразу, а лишь через 10-20 секунд. Для этого надо всего лишь вызвать всплывающее меню, кликнув правой кнопкой мыши по строке с нужной задачей и выбрать из всплывшего меню команду Kill. Во-вторых, вы можете отправить любой процесс в "спячку" - для этого достаточно, выбирая поочередно все потоки этого процесса, нажимать кнопку Suspend (см. вкладку Thread). "Разбудить" потоки можно при помощи находящейся радом кнопки Resume. Зачем это надо? Например, чтобы получить все те же дополнительные проценты производительности. А для пользователей, "разогнавших" свой процессор и испытывающих проблемы с перегревом, будет полезно имеющееся в ATM программное охлаждение процессора, которое можно включить при возникновении такой необходимости. Теперь займемся другой хорошо известной каждому пользователю проблемой: слишком медленной загрузкой программ и работой с файлами. Чаще всего это происходит из-за того, что неправильно настроен файловый кэш Windows (кстати, те настройки кэша, которые Windows устанавливает по умолчанию - просто УЖАСНЫ и расчитаны на машины класса PII-500 с 128М ОЗУ). Запустим Cache Manager и начнем исправлять то, что криво сделали в MicroSoft. Вообще-то программа предлагает несколько готовых схем настройки кэша, но часть из них тоже неоптимальна, а потому мы будем делать все вручную. Правило номер один: кэш должен иметь фиксированный размер, то есть минимальное значение должно быть равно максимальному. Дело в том, что когда Windows начинает подгонять размер кэша под текущие потребности системы, происходит выделение\оптимизация\высвобождение больших участков памяти, и, разумеется, все это работает очень медленно. Особенно если учесть, что правильно определить оптимальный размер кэша Windows удается редко. А фиксированный размер кэша избавляет Винду от излишних раздумий и перетаскивания мегабайтных кусков памяти, что весьма благоприятно сказывается на производительности. Другой важный момент: кэш постоянно находится в физической памяти (даже когда вы не работаете с файлами) - поэтому он не должен быть чрезмерно большим. Практика показала, что на системе с 16-32М ОЗУ не стоит делать кэш больше, чем на 2-3 мегабайта; на системах с 48-64М ОЗУ для кэша вполне достаточно 4-6 мегабайт. Устанавливать размер кэша больше 16М даже на системах с большим объемом ОЗУ обычно не имеет смысла. При этом важно еще и то, для чего обычно используется компьютер. Если Вы работаете с графикой, программируете или пишете музыку - кэш должен быть несколько больше средних значений, и наоборот - если компьютер используется в основном для игр и работы в Word, часто бывает достаточно кэша размером в 1-2 мегабайта, поскольку используемые в современных играх карты размером в десятки и сотни мегабайт нормально кэшировать средствами Windows практически невозможно. Эффективность управления размером кэша весьма велика - при правильном выборе параметров время загрузки "тяжелых" приложений класса Delphi 5 или StarOffice 5.1 уменьшается на несколько секунд, а при работе в PhotoShop удачно выбранный размер кэша дает весьма значительный прирост быстродействия при работе с большими изображениями. При желании можно поэкспериментировать и с другими параметрами - например, зачем Вам кэшировать 4096 имен файлов, если в Вашей любимой папке "Мои документы" лежит от силы сотня файлов, а в другие папки Вы заглядываете не чаще одного раза в неделю? Уменьшите это значение в два-четыре раза - и у вас сразу станет заметно больше свободной памяти. В общем, Cache Manager оставляет широкое поле для самостоятельного творчества - не пожалейте полчаса на подбор оптимальных параметров, и вы сэкономите себе в будущем гораздо больше времени и нервов. Ну и наконец третья из основных проблем с быстродействием: загрузка и работа "прожорливых" до памяти приложений. Появление ОС Windows породило совершенно новый стиль программирования: некоторые весьма популярные программы (например MS Internet Explorer 5.0) написаны таким образом, что после загрузки забирают под свои нужды весьма ощутимое количество памяти, и если вслед за открытием в IE двух-трех страничек попытаться запустить какое-нибудь другое, пусть даже весьма экономное приложение, вы наверняка услышите судорожный скрежет винчестера, а загрузка программы будет происходить очень медленно. Более того, некоторым приложениям может просто не хватить памяти, хотя в свап-файле может быть еще вполне достаточно места. И тут встает вопрос - нельзя ли как-нибудь заставить Windows ненужные в данный момент данные сбросить в свап, а значительно более быструю физическую память отдать для загрузки нужной программы. И тут нам поможет FreeMem Pro 4.3. Эта программа может заставить Винды отдать в распоряжение пользователя всю память, которая не является необходимой для работы программ. Мне эта программа знакома еще по версии FreeMem Standard 3, и могу сказать, что она и тогда была очень неплохой, но версия 4.3 - это НЕЧТО. Начнем с того, что за все время использования (более трех месяцев) эта программа ни разу не приводила к сбоям при загрузке и работе приложений (что иногда бывало с FreeMem Standard 3, а RAMBooster 1.6 вообще создавал больше проблем, чем решал). Механизм работы этой программы довольно прост: программа запрашивает у Windows несколько раз подряд большие объемы физической памяти, вынуждая ОС вытеснять неактуальные данные в свап-файл, а затем возвращает память операционной системе. В результате в физической памяти образуются большие свободные области, которые можно использовать для быстрой загрузки приложений или работы с большими объемами данных. Установив и запустив эту программу, Вы увидите окно, в котором будет отображаться в виде графика объем свободной физической памяти. Нажав кнопку Minimize, Вы заставите программу спрятаться в SysTray, но даже там она будет продолжать информировать Вас о том, сколько памяти свободно. Однако пока вернем программу на место и проделаем некоторые настройки. Сначала заглянем на вкладку Icon и установим три уровня высвобождения памяти, которые затем будут отображаться в всплывающем меню. К примеру, я для системы с 64М ОЗУ выбрал значения 8, 16 и 32 мегабайта, а вообще оптимальные значения подбираются опытным путем. Также можно изменить тот минимум, по достижении которого программа сигнализирует о недостатке памяти сменой цвета полосы на иконке приложения с зеленого на желтый (я установил его равным 4.000K или 4М, однако для кого-то критической может оказаться и величина в 32М). Теперь перейдем к вкладке Backgroud, на которой можно определить, чем должна заниматься программа в фоновом режиме. Во-первых, зададим тот минимум свободного ОЗУ, ниже которого возникает угроза стабильности системы (The critial amount of memory for you is:) и объем памяти, который при этом будет принудительно высвобожден (Free up ... if you have less than the critical amount of memory). Могу порекомендовать следующие значения: 1000-2000 K для первого параметра и 4-8М для второго. Также можно настроить программу, чтобы она освобождала некоторый объем памяти через некоторый промежуток времени (например, каждые полчаса до уровня 20М). Кроме того, с помощью этой программы вы можете отслеживать, как изменяется объем свободной памяти в Вашей системе и высвобождать дополнительную память для запуска и работы ресурсоемких приложений, таких как PaintShop Pro или Delphi. Больше того - Вам не обязательно каждый раз высвобождать нужное количество памяти вручную и затем метаться в поисках нужного приложения по всему меню Programs - просто кликните правой кнопкой по иконке FreeMem а затем выберите в всплывающем меню Free and Run | Manage Entries. Вы увидите окно, которое позволяет создавать список программ для быстрого запуска и заодно указать, сколько памяти нужно освободить перед запуском каждого из приложений. Однако на этом возможности FreeMem не кончаются - обязательно загляните на вкладку StartUp. Если вы разрешите программе стартовать автоматически после загрузки Windows, FreeMem будет высвобождать указанное Вами количество памяти, обеспечивая вашим приложениям наиболее комфортные условия. Лучшей стратегией будет установить время ожидания (...And wait for), равное 10-15 секундам (за это время наверняка успеют автоматически загрузиться все необходимые утилиты) и попросить программу довести объем свободной памяти (Free up) до максимума с двух попыток (Free up not more than 2 times). Как показали эксперименты, на системе с 48М ОЗУ после загрузки аккуратно настроенной Winsows98SE можно без проблем освободить 24М физической памяти, а на системе с 64М - 40 мегабайт. Неплохой резерв, не правда ли? Эффективные алгоритмы, реализованные в FreeMem Pro, сводят к минимуму необходимость вмешиваться в работу программы и высвобождать память "вручную", но если такое желание все же возникнет, то и тут Вас ожидает приятный сюрприз. Правым кликом мыши по иконке в трее Вы можете вызвать всплывающее меню и выбрать один из трех заранее заданных объемов памяти, после чего остается только немного подождать результата. Программа освободит нужное вам количество памяти, если только это возможно - и все неиспользуемые в данный момент времени данные будут вытеснены в свап-файл, а вы сможете быстро загрузить любое, даже самое "тяжелое" приложение или просто дадите системе отдышаться после тяжелой работы. Также высвобождение памяти можно выполнить при помощи кнопки Allocate and Free, находящейся на вкладке Free Memory. Могу также порекоменовать установить на этой вкладке параметр Allocate and Free not more than ... равным двум - это число попыток, за которое программа будет освобождать память. Практика показала, что высвободить желаемый объем ОЗУ с первого раза удается не всегда, в то время как установка большого числа попыток не дает никакого реального выигрыша. Ну и напоследок - маленький секрет быстрого копирования больших объемов информации. У Вас ведь всегда включен антивирусный монитор? Разумно. Но на время копирования больших блоков информации его можно и отключить - и вот почему: современные антивирусные мониторы очень неплохо научились залезать внутрь архивов и даже распаковывать сжатые EXE. И разумеется, все это происходит ОЧЕНЬ медленно (если кто-то сидит на PIII-700, слово ОЧЕНЬ беру обратно). Однако заразиться вирусом при простом копировании файлов практически невозможно, а уж если Вы копируете СВОИ данные, которые и так много раз проверены и перепроверены - то Вам тем более ничего не угрожает. Отключите на время копирования антивирусный монитор - и Вы заметите ощутимое ускорение при переносе больших объемов информации файлов. (Впервые опубликовано в электронном журнале InfoServ: http://www.k26.ru (сервер доступен только в г. Железногорск\Красноярск-26)
|
|||
|
|||
Copyright © "Internet Zone", info@izcity.com | |||
Копирование и использование данных материалов разрешается только в случае указания на журнал "Internet Zone", как на источник получения информации. При этом во всех ссылках обязательно явное указание адреса вэб-сайта http://www.izcity.com/. При наличии у копируемого материала авторов и источника информации - их также нужно указывать, наряду со ссылкой на нас. |