Обратная связь:

 

 

Оптимизируй это!

или как нам обустроить компьютер

Главная Часть I Часть II Часть III Часть IV Часть V Часть VI

 

Часть V

Дефрагментация

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

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

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

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

Второй вариант. Необъятное множество дефрагментаторов сразу резко сузим, наложив на него требования, озвученные ещё в первой статье: дефрагментатор должен быть модульным и должен управляться из командной строки. Как вы понимаете, эти критерии – не прихоть сибарита, а вполне разумный подход, позволяющий перепоручить уход за собой самому компьютеру.

«Perfect Disk» - это навороченный дефрагментатор с чёртовой уймой настроек и опций. Однако, он отвечает нашим требованиям – управляем командной строкою. После его инсталляции следует перевести службы «PD91Engine» и «PD91Agent» в «ручной» режим запуска. Они нам без надобности. Их предназначение мы реализуем с помощью простейших заданий для nnCron’а, а вот занимаемую этими службами память высвободим.

В Листинге 1 показаны два «эффектора». Как явствует из названия, первый эффектор запускает дефрагментацию. При этом «Perfect Disk» сам запустит потребные ему службы.

Задание «stop_defrag» остановит не только процесс дефрагментации, но и запущенные вспомогательные службы. Нечего им делать в памяти в отсутствие дефрагментатора.

Но это только цветочки. Ягодки, как водится впереди.

 

#( run_defrag

VARIABLE DISK_DEFRAG

NoLog

RunOnce

NoDel

AsLoggedUser

LoadProfile

Time: 7 16 17 7 * 2007

Action:

SWHide   IdlePriority

 

  FILE-EXIST: "C:\Program Files\Raxco\PerfectDisk2008\PDCmd.exe"

  IF

    DISK_DEFRAG GET

      PROC-EXIST: "PDEngine.exe" NOT

      IF

        START-APPW: "C:\Program Files\Raxco\PerfectDisk2008\PDCmd.exe" /ALL /ALLDRIVES /SmartPlacement /WAIT

      THEN

    DISK_DEFRAG RELEASE

  THEN

)#

 

#( stop_defrag

NoLog

RunOnce

NoDel

AsLoggedUser

LoadProfile

Time: 7 16 17 7 * 2007

Action:

SWHide   NormalPriority

 

  PROC-EXIST: "PD91Engine.exe"

  IF

   START-APPW: "C:\Program Files\Raxco\PerfectDisk2008\PDCmd.exe" /STOP /AllDrives

  THEN

 

  PROC-EXIST: "PD91Engine.exe"

  IF

    START-APP: net stop "PD91Engine"

  THEN

 

  PROC-EXIST: "PD91Agent.exe"

  IF

    START-APP: net stop "PD91Agent"

  THEN

)#

Листинг 1

 

Конечно же, запускать вручную эти задания мы не собираемся. Позаботимся о том, чтобы nnCron мог отслеживать периоды бездействия пользователя (трёп с секретаршей Леночкой) и возобновления пользовательской активности, если Леночка отшила.

Этим у нас займётся управляющее задание «ComputerMonitoring» - см. Листинг 2. Здесь всё ясно без слов. Когда компьютер поймёт, что вы опять занимаетесь чёрт-те чем, он (бережёного бог бережёт!) создаст точку восстановления, выполнит полную очистку дисков и запустит дефрагментацию.

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

 

#( ComputerMonitoring

NoLog

RunOnce

NoDel

AsLoggedUser

LoadProfile

Time: 13 14 29 4 * 2008

Action:

 

  \ Если усер не работает 10 минут...

  IDLE: 600

  IF

    \ ...и загрузка процессора в течение 9 минут ниже 3%...

    540000 (CPU-USAGE) . ." %" CR

    3 <

    IF

      FILE-EXIST: "C:\Program Files\nnCron\Flags\PersistentConnect.flag"

      IF

        PROC-EXIST: "PDCmd.exe" NOT

        IF

          Создание_точки_восстановления RUN

          Очистка_диска                 RUN

          Глубокая_очистка_дисков       RUN

            

          run_defrag                    RUN

        THEN

      ELSE

        PROC-EXIST: "spidernt.exe" NOT PROC-EXIST: "PDCmd.exe" NOT AND

        IF

          Создание_точки_восстановления RUN

          Очистка_диска                 RUN

          Глубокая_очистка_дисков       RUN

           

          run_defrag                    RUN

        THEN

      THEN

    THEN

  THEN

 

  \ Если усер возобновил работу, остановить дефрагментацию

  IDLE: 10

  IF

  ELSE

    PROC-EXIST: "PDCmd.exe"

    IF

      stop_defrag RUN

    THEN

  THEN

)#

Листинг 2

 

Подводя итог содеянному (я не про Леночку!), с удовлетворением резюмируем, что и эту работёнку - заботу о дефрагментации - мы спихнули на безответный компьютер. Вот так всегда, кому все прелести этой жизни - кафе, кино, ну и так далее, а кому – скучная оптимизация дисковых разделов…

Но и это ещё не конец сказки. Смотрим на усложнённое задание «Ежеминутно» в Листинге 3. Почти в самом его конце видим выполнение задания «ComputerMonitoring». То есть, в конечном итоге, всё это работает так: в «Ежеминутно» каждые 10 секунд выполняется цикл, в котором, в том числе, эффектором «ComputerMonitoring» анализируется активность пользователя или отсутствие таковой.

По результатам анализа принимается решение, запускать ли процесс дефрагментации или останавливать его. Или ничего не делать, а подождать ещё немножко…

 

#( Ежеминутно

NoLog

NoDel

AsLoggedUser

LoadProfile

VARIABLE EVERY_MIN

Action:

SWHide   NormalPriority

 

  Процессы_по_ядрам RUN

 

  \ 6 итераций цикла с паузой в 10 секунд

  6 0 DO

    EVERY_MIN GET

      \ Если флешка с еБустером "отвалилась", остановить службу

      FILE-EXIST: "%eBoostr_Letter%:\eboostr.dat" NOT

      IF

        eBoostr_stop RUN

      THEN

     

      FILE-EXIST: "C:\Program Files\nnCron\Flags\PersistentConnect.flag" NOT

      IF

        \ Если связь с интернетом наличествует

        HOST-EXIST: "rbc.ru"

        IF

         \ Если защиты нет, включить её

         PROC-EXIST: "acs.exe" NOT

         IF

           OnBeginConnect RUN

         THEN

        

         \ Выполнить обновление при первом обнаружении соединения с интернетом

         UpdateOnceADay RUN

        ELSE

         WIN-EXIST: "Установка связи*"

         IF

         ELSE

          WIN-EXIST: "Подключение по локальной*"

          IF

          ELSE

           OnDisconnect RUN

          THEN

         THEN

        THEN

      THEN

     

      ComputerMonitoring RUN

     

      PAUSE: 10000

    EVERY_MIN RELEASE

  LOOP

)#

Листинг 3

 

Оптимизация 2.0

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

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

Если у вас есть два и более физически разных «винта», грех этим не воспользоваться. Можно из них смастерить RAID-массив, но эту тему мы обойдём сторонкой: профи и без нас разберутся.

А можно часть ввода-вывода перенаправить на второй диск, и будет нам от этого счастье: головки-то винтов теперь будут дёргаться параллельно, что несколько ускорит работу системы в целом.

Распараллелить обращения к дискам совсем просто. Создайте на втором диске папку «TEMP» и переназначьте туда переменные среды «TEMP» и «TMP». А ещё перетащите туда своп-файл «pagefile.sys». Вам это ничего не стоит, а компьютеру приятно. Также можно некоторые программы устанавливать не в «C:\Program Files», а на второй диск.

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

Продолжаем приводить в порядок свои мысли, компьютер, жизнь. С Леночкой надо что-то решать. Итак, в Windows Vista впервые появилась технология «Ready boost», которая позволяет ускорить запуск приложений, создав кеш-файл на флешке. Некоторые ошибочно называют это «ускорением работы», но они ошибаются. Эта технология не увеличит ни тактовую частоту процессора, ни объём и скорость работы оперативной памяти.

Она просто ускоряет именно запуск приложений за счёт всё того же распараллеливания ввода-вывода: наиболее часто используемые файлы (приложения, DLL-ки, и т.п.) переносятся на флешку, а специальный драйвер при обращении к файлу смотрит: если дубликат этого файла есть на флешке, он считывается оттуда.

Таким образом, даже если флешка не шибко шустрая, ускорение запуска приложений имеет место быть, т.к. набившие оскомину головки «винта» не ёрзают по всей поверхности диска в поисках нужных файлов, а вальяжно считывают редкие файлы, не сдублированные на флешку. Остальные же файлы «подкачиваются» с неё. А уж если флешка скоростная, с надписью «Ready boost», всё будет порхать, как во сне!

Нашлись добрые люди, которые и для Windows XP создали подобный драйвер: http://www.eboostr.com. Причём, эта вещь более продвинутая, чем в Windows Vista. Например, здесь можно создать список исключений; действительно, не имеет смысла закачивать на флешку ваши любимые звуковые файлы или фильмы: места они займут о-го-го, а толку от их размещения в файле кэширования – ноль.

Кроме того, приятно, что и эта софтина – модульная: собственно работу выполняет драйвер, оформленный в виде службы «eBoostr Service», а настраивать и мониторить его работу можно из панели управления («eBoostr Control Panel»), которая запускается (или не запускается) отдельно.

Как всегда, после установки приложения, переводим его службу в ручной режим запуска, а панель управления «eBoostr Control Panel» убираем из автозагрузки с помощью «msconfig.exe».

Делается это во исполнение нашей концепции, согласно которой, всякому овощу своё время. Понятно, что eBooster должен работать только при наличии флешки, содержащей его кеш-файл. Если флешка отсутствует, этому драйверу нет смысла болтаться в памяти.

Наличие флешки в разъёме USB-порта проверяется двояко. Во-первых, в момент загрузки Windows; если в этот момент нужная флешка вставлена, служба «eBoostr Service» будет запущена и начнёт свою ускоряющую работу; если флешки нет, служба не стартует.

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

Напротив, если вы извлекли флешку, компьютер остановит ставшую ненужной службу; ну и контрольную панель срубит…

Вообще, в том, как наш компьютер пристально следит за службами и останавливает ставшие ненужными, просматривается аналогия с термином из программирования «сборка мусора».

Для реализации такого поведения компьютера нужно: указать ему, под какой буквой будет видна флешка с кеш-файлом, а также смастрячить управляющие задания. Займёмся этим.

Во-первых, в самом начале кронтаба (файла со скриптами для nnCron) у нас есть такая запись:

<%

\ Буква флешки, содержащей файл eboostr.dat

fVAR eBoostr_Letter

S" B" TO eBoostr_Letter

%>

Это и есть указание, на каком диске (флешке) у нас создан кеш-файл для eBooster’а.

Во-вторых, в Листинге 4 представлены два «эффектора», которые запускают и останавливают службу «eBoostr Service».

 

#( eBoostr_start

RunOnce

Time: 41 16 18 10 * 2007

NoLog

NoDel

Action:

SWHide   NormalPriority

 

  FILE-EXIST: "%eBoostr_Letter%:\eboostr.dat" PROC-EXIST: "EBstrSvc.exe" NOT AND

  IF

    START-APP: net start "eBoostr Service"

  THEN

)#

 

#( eBoostr_stop

RunOnce

Time: 41 16 18 10 * 2007

NoLog

NoDel

Action:

SWHide   NormalPriority

 

  PROC-EXIST: "EBstrSvc.exe"

  IF

    START-APP: net stop "eBoostr Service"

  THEN

 

  PROC-EXIST: "eBoostrCP.exe"

  IF

    KILL: "eBoostrCP.exe"

    TRAY-REFRESH

  THEN

)#

Листинг 4

 

В Листинге 5, в задании, обрабатывающем событие «извлечение диска», в конце видна обработка ситуации, когда вынимается флешка с кеш-файлом: при этом служба кэширования будет остановлена.

 

#( OnFlashEjectAny

NoLog

AsLoggedUser

WatchDriveRemove: "*"

Action:

SWHide   NormalPriority

 

  Удалить_флаг_вставленного_диска RUN

 

  CF-ACTIVE?

  IF

    HOST-EXIST: "rbc.ru" NOT

    IF

      spidernt_stop RUN

    THEN

  THEN

 

  \ Если вынимается флешка с кешем для eBoostr

  FILE-EXIST: "%eBoostr_Letter%:\eboostr.dat" NOT

  IF

    eBoostr_stop RUN

  THEN

)#

Листинг 5

 

В шестом листинге показаны мгновения загрузки Windows. Если в этот момент флешка торчит в разъёме, служба «eBoostr Service» будет запущена, и дальнейшая загрузка системы пройдёт под флагом ускорения и перестройки.

 

#( OnStartup

NoLog

Time: START-TIME

Action:

 

  Удалить_флаг_вставленного_диска RUN

   

  \ Если вставлена флешка, содержащая файл кеша для eBoostr

  FILE-EXIST: "%eBoostr_Letter%:\eboostr.dat"

  IF

    eBoostr_start RUN

  THEN

)#

Листинг 6

 

Наконец, в Листинге 7, в скрипте, обрабатывающем событие вставки флешки, видна обработка той ситуации, когда в разъём вставляется флешка с кеш-файлом.

То есть, если эта флешка появилась на сцене уже в процессе работы, после загрузки, компьютер это не оставит без внимания, и запустит свою «ускорялку».

 

#( OnDisk_insert

WINAPI: GetDriveTypeA Kernel32.dll

0 VALUE DiskType

NoLog

AsLoggedUser

LoadProfile

WatchDriveInsert: "*"

Action:

SWHide   NormalPriority

 

  CF-ACTIVE?

  IF

    \ Нарыть тип новоявленного диска

    S" %DRIVE-LETTER%:\" EVAL-SUBST DROP GetDriveTypeA TO DiskType

   

    FILE-CREATE: "C:\Program Files\DiskInserted.flag"

   

    DiskType

    5 =

    IF \ Если это CD/DVD

      \ Врубить SpiderNT

      \ spidernt_start RUN

    ELSE \ Если это НЕ CD/DVD

      \ Если флешка содержит файл кеша для eBoostr

      FILE-EXIST: "%DRIVE-LETTER%:\eboostr.dat"

      IF

        eBoostr_start RUN

      ELSE

        \ Временно запретить выполнение задачи "OnFlashEjectAny"

        OnFlashEjectAny @ CF-ACTIVE CLR-CRON-FLAG

       

        \ Врубить SpiderNT

        spidernt_start RUN

       

        \ Включить "отменялку" запрета выполнения задачи "OnFlashEjectAny"

        EnableSpiderStop @ CF-ACTIVE SET-CRON-FLAG

      THEN

    THEN

  THEN

)#

Листинг 7

 

Ядерная физика

Ещё в бытность мою в студенческом отряде я убедился в том, что «щелкопёр» практически всегда – синоним некомпетентности и снобизма. С тех пор было множество поводов укрепиться в этом мнении.

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

Существует устоявшаяся терминология: реакция распада (тяжёлых) атомных ядер, например, урана или плутония, называется реакцией деления атомного ядра, или атомного распада, или атомной.

А реакция слияния или синтеза (лёгких) ядер, например, изотопов водорода, называется реакцией ядерного синтеза, или ядерной.

Бомбы, использующие принцип распада атомного ядра, называются атомными. Атомные станции вырабатывают энергию, используя контролируемую реакцию атомного распада.

Бомбы, использующие реакцию синтеза ядер лёгких элементов, называются ядерными. Они помощнее атомных будут, атомный заряд используется в ядерной бомбе в качестве запала. "Кузькина мать" - из их числа.

А термоядерных электростанций ещё не построили.

 

Но все наши журналистики, как сговорились, в один голос называют всё атомное (энергетику, реакторы, бомбы и т.д.) ядерным. Нравится им это слово. Звучит, наверное, красивше…

Ну не будет у Ирана и Кореи ядерной бомбы, НЕ-БУ-ДЕТ!!! Они ещё под стол пешком ходят, им атомную смастерить - и счастья полны штаны будут, слюнями всех забрызгают.

Что-то я разошёлся… Или расходился? Достали непрофессионалы.

Вообще, непрофессионалы - примета нашего времени. Сплошь и рядом, на каждом шагу.

Ядерная механика

Теперь поговорим об оптимизации работы многоядерных компьютеров.

Про диалектику слыхали? А я её проходил. Так вот, диалектика – это единство и борьба противоположностей. По крайней мере, так говорил классик.

Как бы странно это ни выглядело, мы имеем два прямо противоположных метода ускорения работы: использование многоядерности и отказ от её использования.

Использование многоядерности

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

Кроме того, можно ускорить загрузку Windows, приказав ей использовать все имеющиеся ядра именно в процессе загрузки.

Для этого надо сделать пару телодвижений. Если у вас Windows XP SP2, убедитесь, что вы уже «накатывали» обновление «KB896256»; если вы работаете на SP3, всё в порядке. А уж уж Windows Vista и сама во всём разберётся.

Затем в «boot.ini» в строке запуска системы добавьте ключ «/usepmtimer» - теперь система будет использовать все ядра не только в процессе работы, но и при загрузке. Говорят, способствует…

НЕ-использование многоядерности

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

Такие приложения умеют работать только на одном ядре (процессоре), а Windows начинает ими жонглировать, перебрасывать процесс с одного ядра на другое.

А ведь при этом имеют место накладные расходы: для переброски процесса требуется запомнить его состояние, содержимое регистров и памяти, и т.д. А после «приземления» процесса на другое ядро всё это хозяйство требуется восстановить, чтобы программа продолжила работу на новом месте.

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

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

Затем надо определиться, какие процессы на какие ядра будем разруливать. Я считаю первое ядро основным, на нём у меня выполняются «тяжёлые» приложения: компилятор программ, виртуальная машина VMware, и т.д.

А вот всякие необязательные, но приятные полезняшки (часики в уголке экрана, AIMP (MP3-проигрыватель), BSplayer (просмотр фильмов), Beholder (просмотр TV)), а также MS Word, Excel, spiderml.exe, spiderui.exe, ReGet, и т.д. «сваливаю» на второе ядро: по крайней мере, они не будут отвлекать компьютер от важных задач.

Как всегда, рулить всем у нас будет nnCron. Надо настрогать много маленьких заданий, которые будут перекидывать эти программы на нужное ядро сразу же при их запуске. Здесь же можно и назначить приоритет выполнения этих задач. Примерный список таких заданьиц приведён в Листинге 8. Расширять и изменять его можно почти до бесконечности, насколько хватит фантазии.

А задание "CheckFlags" отключит все эти эффекторы, если в вашем компьютере всего один процессор (ядро).

 

#( BSPLAYER_to_CPU2

NoLog

AsLoggedUser

LoadProfile

WatchProc: "bsplayer.exe"

Action:

 

  CF-ACTIVE?

  IF

    S" bsplayer.exe" 2 AFFINITY

  THEN

)#

 

#( TV_to_CPU2

NoLog

AsLoggedUser

LoadProfile

WatchProc: "BeholdTV.exe"

Action:

 

  CF-ACTIVE?

  IF

    S" BeholdTV.exe" 2 AFFINITY

  THEN

)#

 

#( WINWORD_to_CPU2

NoLog

AsLoggedUser

LoadProfile

WatchProc: "WINWORD.EXE"

Action:

 

  CF-ACTIVE?

  IF

    S" WINWORD.EXE" 2 AFFINITY

  THEN

)#

 

#( EXCEL_to_CPU2

NoLog

AsLoggedUser

LoadProfile

WatchProc: "EXCEL.EXE"

Action:

 

  CF-ACTIVE?

  IF

    S" EXCEL.EXE" 2 AFFINITY

  THEN

)#

 

#( XNVIEW_to_CPU2

NoLog

AsLoggedUser

LoadProfile

WatchProc: "xnview.exe"

Action:

 

  CF-ACTIVE?

  IF

    S" xnview.exe" 2 AFFINITY

  THEN

)#

 

#( DIVXSM_to_CPU2

NoLog

AsLoggedUser

LoadProfile

WatchProc: "DivXsm.exe"

Action:

 

  CF-ACTIVE?

  IF

    S" DivXsm.exe" 2 AFFINITY

  THEN

)#

 

#( spiderml_to_CPU2

NoLog

AsLoggedUser

LoadProfile

WatchProc: "spiderml.exe"

Action:

 

  CF-ACTIVE?

  IF

    S" spiderml.exe" 2 AFFINITY

  THEN

)#

 

#( spiderui_to_CPU2

NoLog

AsLoggedUser

LoadProfile

WatchProc: "spiderui.exe"

Action:

 

  CF-ACTIVE?

  IF

    S" spiderui.exe" 2 AFFINITY

  THEN

)#

#( OutlookOn

NoLog

AsLoggedUser

LoadProfile

WatchProc: "OUTLOOK.EXE"

Action:

 

  FILE-EXIST: "C:\Program Files\nnCron\Flags\MultiProc.flag"

  IF

    S" OUTLOOK.EXE" 2 AFFINITY

  THEN

 

  HOST-EXIST: "mail.ru"

  IF

    \ Дождаться окончания загрузки OUTLOOK

    PAUSE: 2000

   

    FOR-PROCS: "OUTLOOK.EXE"

      FOUND-PID PROC-WAIT-IDLE

    ;FOR-PROCS

   

    spiderml_start RUN

  THEN

)#

#( op_mon_to_CPU2

NoLog

AsLoggedUser

LoadProfile

WatchProc: "op_mon.exe"

Action:

 

  CF-ACTIVE?

  IF

    S" op_mon.exe" 2 AFFINITY

  THEN

)#

 

#( nero_to_CPU1

NoLog

AsLoggedUser

LoadProfile

WatchProc: "nero.exe"

Action:

 

  FILE-EXIST: "C:\Program Files\nnCron\Flags\MultiProc.flag"

  IF

    S" nero.exe" 1 AFFINITY

  THEN

   

  S" nero.exe" HIGH_PRIORITY_CLASS PRIORITY

)#

 

#( ReGetDx_to_CPU2

NoLog

AsLoggedUser

LoadProfile

WatchProc: "ReGetDx.exe"

Action:

 

  CF-ACTIVE?

  IF

    S" ReGetDx.exe" 2 AFFINITY

  THEN

)#

 

#( Ad-Aware_to_CPU2

NoLog

AsLoggedUser

LoadProfile

WatchProc: "Ad-Aware.exe"

Action:

 

  FILE-EXIST: "C:\Program Files\nnCron\Flags\MultiProc.flag"

  IF

    S" Ad-Aware.exe" 2 AFFINITY

  THEN

   

  S" Ad-Aware.exe" IDLE_PRIORITY_CLASS PRIORITY

)#

 

#( AIMP2_to_CPU2

NoLog

AsLoggedUser

LoadProfile

WatchProc: "AIMP2.exe"

Action:

 

  CF-ACTIVE?

  IF

    S" AIMP2.exe" 2 AFFINITY

  THEN

)#

Листинг 8

 

 

#( CheckFlags
        NoLog
RunOnce
NoDel
Time: 32 11 2 6 * 2008
Action:

\ Если соединение с инетом постоянное, выключить событийно-ориентированные
\ задания на включение/выключение защиты
FILE-EXIST: "C:\Program Files\nnCron\Flags\PersistentConnect.flag"
IF
OnDisk_insert @ CF-ACTIVE CLR-CRON-FLAG
OnBeginConnect @ CF-ACTIVE CLR-CRON-FLAG
OnDisconnect @ CF-ACTIVE CLR-CRON-FLAG
OnNetConnect @ CF-ACTIVE CLR-CRON-FLAG
THEN


\ Определить кол-во ядер процессора
S" %NUMBER_OF_PROCESSORS%" EVAL-SUBST TO S_TMP

\ Если ядро одно, запретить переключение процессов по ядрам
S_TMP S" 1" COMPARE 0=
IF
Процессы_по_ядрам @ CF-ACTIVE CLR-CRON-FLAG
BSPLAYER_to_CPU2 @ CF-ACTIVE CLR-CRON-FLAG
TV_to_CPU2 @ CF-ACTIVE CLR-CRON-FLAG
WINWORD_to_CPU2 @ CF-ACTIVE CLR-CRON-FLAG
EXCEL_to_CPU2 @ CF-ACTIVE CLR-CRON-FLAG
XNVIEW_to_CPU2 @ CF-ACTIVE CLR-CRON-FLAG
DIVXSM_to_CPU2 @ CF-ACTIVE CLR-CRON-FLAG
spiderml_to_CPU2 @ CF-ACTIVE CLR-CRON-FLAG
spiderui_to_CPU2 @ CF-ACTIVE CLR-CRON-FLAG
op_mon_to_CPU2 @ CF-ACTIVE CLR-CRON-FLAG
ReGetDx_to_CPU2 @ CF-ACTIVE CLR-CRON-FLAG
AIMP2_to_CPU2 @ CF-ACTIVE CLR-CRON-FLAG
THEN
)#

Листинг 9

 

В этой статье мы описали методы повышения эффективности работы за счёт оптимизации подсистемы ввода/вывода и использования преимуществ мультипроцессорных компьютеров.


Главная Часть I Часть II Часть III Часть IV Часть V Часть VI

 

Специальная сборка nnCron

 

    Чтобы вдохновить читателя на подвиги, сообщу, что в природе существует созданный мною дистрибутив nnCron, обладающий многими достоинствами:

 

·         nnCron устанавливается со всеми необходимыми плагинами и параметрами, его не придётся настраивать вручную

·         в состав дистрибутива уже входят все скрипты, описанные в этом цикле статей

·         планировщик устанавливается уже зарегистрированным. Это не наносит ущерба автору – как уже упоминалось, для жителей б.СССР это удовольствие бесплатное

·         также дистрибутив содержит утилиты Wget и Pkunzip, которые будут инсталлированы вместе с nnCron

·         дистрибутив выполняет некоторую оптимизацию Windows: создаёт папку для временных файлов с коротким именем «C:\TEMP»; отключает общиe ресурсы «Admin$», «С$», и т.д.; отключает встроенный отладчик «Dr.Watson»; запрещает выгружать ядро системы в файл свопинга, чем отсекает потенциальные «тормоза», просит Windows выгружать из памяти неиспользуемые приложениями библиотеки: это гораздо практичнее использования всяких левых «оптимизаторов оперативной памяти»

·         инсталлирует бесплатный дефрагментатор «JkDefrag», работающий в режиме экранной заставки

 

Главная | Часть I | Часть II | Часть III | Часть IV | Часть V | Часть VI

По вопросам, связанным с этим веб-узлом, обращайтесь по адресу
© ASK Software, 2004. Все права защищены.
Последнее изменение: 30.06.2010.