Экстремальный разгон Windows XP

Трудно себе представить, сколько статей по разгону этой ОС было написано в одной только КГ. Наверное, уже каждый пользователь знает (а кто еще не знает, отправляется читать подписку КГ за прошлые годы.), что можно отключить некоторые службы в msconfig’e, там же редактировать автозагрузку… Также много писали о дополнительной тонкой настройке в редакторе групповых политик gpedit.msc. Отключив все ненужные сервисы и освободив тем самым несколько десятков мегабайт оперативной памяти, обладатели слабых машин заметят прирост в производительности. Если же вы обладатель какого-нибудь Athlon X2/Core Duo/Phenom, то таким разгоном вообще заниматься не стоит: все и так прекрасно работает. Кроме лишних проблем, которые могут возникнуть совершенно неожиданно, ничего полезного себе вы не приобретете, т.к. чем мощнее машина, тем меньший наблюдается эффект от освобождения этих нескольких десятков мегабайт. Эта статья расскажет совершенно о другом способе. Такой способ разгона действительно можно назвать экстремальным. Итак, ни много ни мало, меняем ядро.

Введение

Началось все с того, что на сайте www.jelezka.ru появилось сообщение о новом способе разгона ХР. Его автор утверждал, что Microsoft специально замедляет быстродействие процессоров в своих новых операционках и что смена стандартного ядра на старое «Standard PC with C-Step i486» дает большое увеличение производительности. Разумеется, такое сообщение не могло остаться незамеченным, и на многих форумах появились соответствующие темы. Люди в основном только обсуждали вопрос, а реально ядро сменили очень немногие. Результаты этих экспериментов оказались противоречивыми: у одних система значительно увеличила скорость работы, у других никаких изменений не произошло. Подробные тесты проводили единицы, и опять же результаты весьма спорные: бенчмарки лишних fps не обнаружили, а на глаз заметно увеличение производительности. Совсем недавно наткнулся на документ, где авторы уверяли нас в 175%-ном увеличении производительности! К подобным статьям следует относиться со здоровым скептицизмом. Такого прироста никак не добиться, разве что процессор поменять :). Но если можно еще что-то выжать из своей машинки, просто поменяв ядро, то почему бы и нет? Начнем с того, что никакая «недокументированная функция» не была открыта. Еще во времена WinNT смена ядра считалась документированной особенностью. Более того, уже тогда некоторые пользователи экспериментировали с различными версиями ядер.

Теория

Тип ядра операционки должен обязательно соответствовать типу оборудования. Работа многопроцессорного ядра на обычном однопроцессорном десктопе никем, даже самой Microsoft, никогда не тестировалась и поэтому не гарантируется. Точно также стандартное ядро может отказаться работать на многопроцессорной системе. Однако преемственные версии ядер в 95% случаев будут работать на одинаковой конфигурации оборудования. Поэтому их можно переключать даже без переустановки системы. Какие бывают ядра?


Название ядраДля каких компьютеров предназначено
ACPI Multiprocessor PCACPI-система с многопроцессорной материнской платой и двумя или более установленными процессорами
ACPI Uniprocessor PCACPI-система с многопроцессорной материнской платой и одним установленным процессором
ACPI PCACPI-система с однопроцессорной материнской платой
MPS Uniprocessor PCНе ACPI-система с многопроцессорной материнской платой и одним установленным процессором
MPS Multiprocessor PCНе ACPI-система, с многопроцессорной материнской платой и двумя или более установленными процессорами
ACPI Compaq System Pro or 100% compatibleКомпьютеры типа Compaq SystemPro или полностью совместимые с ним
Standard PCЛюбой стандартный компьютер без ACPI с однопроцессорной материнской платой
Standard PC with C-Step i486Однопроцессорный компьютер с процессором 80486 и без ACPI.


Существует ли обоснование, почему смена ядра на старое 486-е дает увеличение скорости работы ОС? Да, действительно существует. Дело в том, что во времена 486-х процессоров Microsoft приходилось затачивать отдельно под каждую платформу ядро своей операционки. То есть ядра, оптимизированные для сервера, существенно отличались от ядер для обычного десктопа, ведь сервер – машина многопроцессорная, а в десктопе всегда был установлен один процессор. Разумеется, на это софтверный гигант тратил много усилий. Со временем мощности рядового ПК выросли, и корпорация с облегчением перенесла многопроцессорное ядро на наши с вами настольные компьютеры. Разработчики увидели, что современный процессор способен прекрасно «вытягивать» такое ядро, тем паче появились и многопроцессорные десктопы, и больше нет нужды в специальных оптимизациях. Разумеется, многопроцессорная машина решает более сложные задачи, чем однопроцессорная. Возьмем, к примеру, проблему выделения памяти. Ядро операционной системы должно обеспечить для каждого процессора свою изолированную область, куда другой процессор проникнуть не может (если, конечно, не используется архитектура с общей памятью). Как только это произойдет, возникает критическая ошибка. Если для работы некоторого алгоритма необходим общий стек, то модифицироваться данные процессоры должны по очереди – когда один работает, все остальные блокируются с помощью спинлоков (spin lock). Cпинлоки отбирают у процессора огромное количество ресурсов, поскольку имеют наивысший приоритет. В однопроцессорных системах они, очевидно, не имеют никакого смысла (кого тут блокировать?). В итоге какую-то часть времени процессор тратит на ненужные спинлоки. Выходит, ядро работает медленнее, чем могло бы. Помимо спинлоков, есть еще некоторые проблемы, например эффективность алгоритмов. Скажем, распараллеленный на четыре процессора алгоритм никогда не будет эффективно исполняться на одном. Поддержка многопроцессорности пришла к нам вместе с ACPI. Для серверов по-прежнему существуют свои отдельные версии ядер, только теперь они имеют с нашим ядром ACPI PC гораздо больше общего. ACPI со своим динамическим распределением прерываний является еще одним источником «тормозов». Если раньше ядро само обслуживало все шины и устройства, то сейчас всё сильно усложнилось (подробнее про ACPI можно прочитать в КГ №27 за 2005 год). До прихода WinNT, за каждым устройством было жестко закреплено свое прерывание и свое пространство ввода/вывода. Но сейчас ядро абстрагировалось от конкретных устройств и перешло на виртуальные шины, естественно эмулируемые. Конечно, в этом есть свои плюсы, главный из которых надежность, но есть и минусы. Иногда и BIOS, и ОС ошибаются и вешают на одно прерывание несколько устройств, когда еще остались свободные IRQ. И, к сожалению, система начинает возмущаться, если ACPI хоть что-то пришлось не по вкусу.

В общем, для владельцев старых машинок картина выглядит довольно грустно. Итак, какие выгоды реально дает переход на старую версию ядра? Вы должны понимать, что разгон не заставит процессор умножать или делить числа быстрее. Не получите вы, скорее всего, и лишних fps в любимых компьютерных играх. Быстрые ядра отличаются от медленных временными расходами на переключение между задачами. Если раньше вы не могли одновременно слушать музыку и конвертировать видео, то сейчас это станет возможным. Старое ядро позволяет выжать из нашей машинки больше, и при сильной загрузке процессора, например, музыкальные файлы перестанут «хрипеть». Другими словами, прирост быстродействия будет заметен, когда мы параллельно с тестовой задачей запустим еще несколько тяжелых приложений. Люди, сменившие ядро, также отмечают увеличение отзывчивости системы: работать с ней становится намного приятнее. Звучит заманчиво, но теперь давайте поговорим о том, что мы теряем при переходе на 486-е ядро. Конечно, в первую очередь, это ACPI, со всеми вытекающими отсюда последствиями. Отныне никакого спящего, ждущего режима, управления питанием, динамически изменяемых системных конфигураций и прочих удобств, которые предоставляет ACPI. Старое ядро самое быстрое, но по своим функциональным возможностям беднее всех. Учтите, вашу материнскую плату, ваше оборудование и даже ваш BIOS никто никогда не тестировал на совместимость с 486-ым ядром! Стопроцентной гарантии того, что оно вообще запустится, тоже нет. Маленький нюанс: в комплект поставки Win2000 «Standard PC with C-Step i486» не входит. Его можно попробовать вытащить из Интернета либо из дистрибутива той же ХР-шки, только как поведет себя экспишное ядро на Win2k, заранее неизвестно.

Тестирование

От теории переходим к практике. Для начала необходимо разработать методику тестирования. Как я уже отмечал, параллельно с тестовой задачей нужно запускать тяжеловесные приложения. Будем использовать старый пакет Sandra 2003 с параллельно запущенным архивированием тестовой папки. Тестовая папка содержала 3804 файлов и 207 каталогов. Метод сжатия «максимальный непрерывный», чтобы обеспечить наибольшую степень сжатия. Замеры проводились по три раза. Для тестирования я использовал виртуальную машину VMWare 5.5.3 build 34685. Тестовый процессор Athlon 64 3200+ с реальной частотой 2ГГц, 256 мегабайт RAM, 8 ГБ жесткий диск. Дистрибутив XP содержал минимальный набор сервисов, т.к. был предварительно обработан в программе nLite. Теперь о том, как непосредственно поменять ядро. Сделать это «на лету» довольно сложно. Проще всего указать системе новое ядро при установке. Итак, в самом начале установки, когда вас просят нажать F6, нужно нажать F5. (Когда просят нажать F6, нужно нажать F5 – такие вот чудеса в Microsoft Windows :)). Появится меню выбора ядра, в котором нужно выбрать «Standard PC with C-Step i486». Окошко выбора очень маленькое и сперва кажется, что вашего ядра в списке нет. Оно на самом деле есть, просто нужно использовать стрелки.

После установки откройте сверток «Компьютер» в Диспетчере устройств. Если вы там увидели «Стандартный компьютер», значит, все прошло успешно и ядро заменено. В противном случае у вас «Однопроцессорный/Многопроцессорный компьютер с ACPI».

(вот так должно быть, если ядро успешно заменено)

Привожу результаты тестирования в Sandra 2003:


ТестЯдро по умолчаниюЯдро Standard PC with C-Step i486
Арифметический тест CPUALU: 6619MIPSALU: 7081MIPS
FPU: 3741 MFLOPSFPU: 3763 MFLOPS
Тест SSE2Integer: 7799 it/sInteger: 7819 it/s
Float: 10228 it/sFloat: 9937 it/s
Тест дисковой подсистемыDrive Index 15855 kB/sDrive Index 19376 kB/s
Тест памяти



Как видим, 486-ое ядро имеет преимущество не только в математических операциях, но и в работе с дисковой подсистемой. Однако в тестах записи в память стандартное ядро опережает 486-ое. Тем не менее, результаты впечатляют – лишние «попугаи» выжимаются из ничего! Можно сделать вывод, что данный метод разгона Windows XP действительно работает и может применяться. Хотя сильно повысить производительность не удается, при работе с 486- ым ядром система была более отзывчива и более приятна в использовании. Однако замечу, что поведение старого ядра на современных платформах не тестировалось, поэтому в каждом случае результаты непредсказуемы. Это повод провести эксперимент!

Послесловие

Признаюсь, эта статья вышла намного позже своего времени, ведь совсем скоро релиз Windows 7. Но если в ближайшем будущем вы не собираетесь на что-либо менять Windows XP, обязательно попробуйте поэкспериментировать. Кто знает, как поведет себя 486-ое ядро на вашей системе.

Алексей Голованов, AlekseyGolovanov@mail.ru


Компьютерная газета. Статья была опубликована в номере 28 за 2009 год в рубрике ос

©1997-2022 Компьютерная газета