Сенсационный разгон Windows XP!

_Silver_
11/30/2007, 3:19:34 AM
Хотелось бы услышать мнение господ на данную статью.
Может кто сталкивался с этим и действительно ли это?!


Блокировка CPUID: скрытые возможности Windows XP или сговор Microsoft и Intel?
Как это бывает, мы почти случайно обнаружили в одном из интернет-форумов обсуждение возможности ускорения работы Windows XP… путем блокировки запроса CPUID при установке системы. В зависимости от типа процессора, прирост производительности при использовании такой хитрости составляет, по словам участников форума, от 25% до 110%.

Для этого достаточно при установке Windows XP с компакт-диска в момент «Тестирования оборудования» нажать клавишу F5, выбрать из списка процессоров i486… и наслаждаться жизнью или наоборот, убедиться, что это не сработало, и начать установку системы заново.

Подытожим основные наблюдения, сделанные участниками этого своеобразного эксперимента.
Наибольший прирост производительности наблюдается для «старых» процессоров семейства Intel Pentium III (II) – до 110% (по данным теста 3Dmark и, разумеется, по субъективным ощущениям , также неплохие результаты показали процессоры Celeron
Блокируя CPUID и выбирая i486, можно забыть про SIMD и SSE2, соответственно, манипуляции с CPUID для процессоров семейства Pentium 4 могут не ускорить, а наоборот, замедлить систему
При блокировке CPUID процессоров AMD прироста производительности замечено не было

Отсюда, как подмечает большинство участников обсуждения этого эффекта, можно сделать вывод, что Microsoft использовала информацию CPUID для того, чтобы каким-то образом заставить систему работать медленнее на процессорах Pentium II и Pentium III (или, что тоже логично, при блокировке CPUID в процессе установки блокируется часть сервисов системы, что выливается в большую скорость работы). Возможно, полагают участники форума, это было сделано в рамках соглашения между Microsot и Intel с целью стимулировать спроса на новые процессоры.

На наш взгляд, если приведенная информация о результатах экспериментов с CPUID является достоверной, то это говорит лишь о том, что разработчики операционной системы Windows XP были хорошо информированы об архитектуре процессоров Intel, поэтому могли писать ряд функций, оптимизируя код под этим процессоры. Возможно, что эта проблема будет исследована нами более детально.

Ссылочку убрал.
DELETED
11/30/2007, 3:37:19 AM
Белиберда 3-4х летней давности.

Крис Касперски
Замена ядра в ОС Windows

Традиционно Windows считается закрытой системой, залезть внутрь которой на предмет «чего-то там подкрутить» и трудно, и небезопасно. То ли дело Linux, позволяющая перестраивать себя как угодно, вплоть до замены ядра. Но на самом деле менять ядра можно и в Окнах, нужно только знать как. Эта статья затрагивает следующие системы: Windows NT, 2000, XP, 2003. Пользователи Windows 9x/Me могут ее даже не читать :).

Введение

Все началось с того, что на веб-сайте www.jelezka.ru появилось сообщение о новом способе разгона Windows XP, суть которого в общих чертах сводилась к замене стандартного ядра, которым, как правило, является ACPI-ядро, на «Standard PC with C-Step i486», после чего производительность системы якобы существенно возрастала. Автор заметки напирал на то, что, дескать, Microsoft умышленно замедляет быстродействие процессора в новых ядрах, и потому старое ядро намного предпочтительнее. Эта информация не осталась незамеченной и вызвала бурную дискуссию, быстро переросшую в жаркий флейм. В основном спорящие стороны с умным видом обсуждали темы, в которых мало что понимали, и оперировали тезисами в стиле «Если бы это было правдой, M$ уже давно засудили» и «Где такую траву брал?!». Реальную замену ядра осуществили единицы. У одних система воспряла духом и завращалась быстрее прежнего, другие же не обнаружили никаких изменений в производительности.

Самое забавное, что на самом деле никакого открытия сделано не было. Многие продвинутые товарищи экспериментировали с ядрами еще во времена Windows NT 4.0. Лично я могу подтвердить: да, замена ядра может дать ощутимый прирост производительности, но тогда о ACPI и многих других современных вкусностях придется забыть. Кстати говоря, это документированная особенность поведения системы, и никакого подвоха здесь нет. Не веришь мне – спроси у Microsoft.

Ядерная хирургия

Существует несколько способов смены ядра, самым известный из которых сводится к переустановке операционной системы и нажатию клавиши F5 во время тестирования конфигурации («Press F6 if you need to install a third party SCSI or RAID driver»/»Нажмите F6, если Вам необходимо загрузить SCSI или RAID драйвер стороннего производителя»). Нет, все верно! Когда тебя просят нажать F6, ты должен нажать F5. Вот такая она, Microsoft.

Если никаких клавиш не трогать, Windows автоматически выбирает наиболее подходящее, с ее точки зрения, ядро (если, конечно, не ошибется). F7 отменяет тестирование и назначает стандартное ядро по умолчанию, а F5 форсирует выбор ядра вручную. В штатный комплект поставки Windows XP входят около десятка различных ядер, перечисленных в таблице 1.

Тип ядра должен соответствовать типу оборудования. Так, например, работа стандартного ядра на многопроцессорной материнской плате (даже если на ней установлен всего лишь один процессор) не тестировалась Microsoft и потому не гарантируется. Однако в подавляющем большинстве случаев это ядро работать все-таки будет.

Преемственные версии ядер можно переключать и без установки системы, просто заменяя файлы библиотеки аппаратных абстракций – Hardware Abstraction Layer или сокращенно HAL (по умолчанию hal.dll) и исполнительной системы – Executive System, также называемую KERNEL'ом (по умолчанию ntoskrnl.exe, не путать с kernel32.dll – этот файл совсем из другой оперы). Вместе они и образуют ядро операционной системы, на котором держатся все остальные компоненты.
DELETED
11/30/2007, 3:43:01 AM
Войди в Панель управления -< Система -< Оборудование -< Диспетчер устройств -< Компьютер (Control Panel -< System -< Hardware -< Device Manager -< Computer)и дважды щелкни по нему мышкой, раскрывая иерархическую ветвь, из которой выпрыгнет Компьютер с ACPI/Advanced Configuration and Power Interface (ACPI) PC или что-то в этом роде. Левой клавишей вызови «Cвойства» (Properties) и в закладке «Драйвера» (Drivers) нажми «Обновить драйвер» (Update Driver). Если этой закладки нет, значит, ты не обладаешь правами администратора.

Диспетчер устройств предложит тебе на выбор одно или несколько преемственных ядер, которые вступят в строй сразу же после перезагрузки. Правда, если обновление пройдет неудачно, система наотрез откажется загружаться. Обычно это происходит при попытке обновления стандартного ядра до ACPI или наоборот. Дело в том, что ACPI и не-ACPI ядра используют различные деревья устройств и по-разному распределяют системные ресурсы. Диспетчер устройств позволяет переключать только преемственные версии ядер, но иногда он ошибается, и систему приходится чинить. Удерживая F8 при запуске Windows, дождись появления загрузочного меню. Войди в Last Known Good Configuration и, выбрав подходящий профиль оборудования, скажи Configuration Recovery.

Альтернативный подход

Для обхода ограничений, свойственных диспетчеру устройств, предусмотрен чисто хакерский способ ручного переключения ядер, позволяющий выбирать непреемственные ядра (или ядра, выдернутые из других дистрибутивов Windows), а также организовывать многовариантную загрузку. Для этого необходимо отредактировать файл boot.ini, находящийся в корневом каталоге загрузочного диска. Открой его в Блокноте и найди следующую строку:

multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows XP Professional" /fastdetect /SOS

Теперь либо добавь к ней два новых ключа /KERNEL= и /HAL= , указав имена файлов исполнительной системы ядра и уровня аппаратных абстракций, либо выдели всю строку целиком и вставь ее в конец файла boot.ini, изменив текст "Windows XP Professional" на что-нибудь в стиле "Windows XP hacked" и добавив указанные ключи. Тогда при старте системы на экране появится меню многовариантной загрузки, позволяющее быстро переключаться между различными версиями ядра, не рискуя при этом обрушить основную конфигурацию системы (если это меню не появится, жми на F8).

Если ты не устанавливал никаких сервис-паков, открой каталог WINNT\System32\Driver Cache\i386\driver.cab и вытащи из него файлы, название которых начинается с «HAL». Затем найди файлы, содержащие «nt» и «kr». Скопируй их в каталог WINNT\System32. На машинах с установленным сервис-паком указанные файлы ищи где-нибудь в каталоге сервис-пака. Скажем, в WINNT\ServicePackFiles\i386.
DELETED
11/30/2007, 3:43:40 AM
Руководствуясь таблицами 2, 3 и 4, выбери ядро свой мечты, вписав соответствующие HAL'ы и KENREL'ы в boot.ini, отредактированный вариант которого может выглядеть, например, так:

multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows XP Professional" /fastdetect /SOS

multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows XP hacked" /fastdetect /SOS /HAL=HALMPS.DLL /KERNEL=NTKRNLMP.EXE

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

Так много ядрышек хороших…

Какую версию ядра выбрать? Это зависит от архитектурных особенностей компьютера и твоих потребностей. Таблица 2 описывает назначения некоторых наиболее популярных ядер, из которых в первую очередь хотелось бы обратить внимание на связку NTKRNLMP.EXE/HALMPS.DLL, ориентированную на многопроцессорные системы. Если ты поставил Windows на компьютер без поддержки Hyper-Threading, а затем неожиданно решил заиметь эту поддержку, купив новехонький Pentium-4, система не захочет работать со вторым процессором до тех пор, пока ты не переустановишь ее или… не заменишь ядро. Второе, естественно, проще и быстрее. Кстати, о быстроте.

Ходят слухи, что ядра с поддержкой ACPI проигрывают не-ACPI ядрам по скорости. И хотя доля правды здесь есть, в общем случае это не так. Нормально работающий ACPI не тормозит систему, если, конечно, ничего не конфликтует и не глючит. Проблема в том, что конфликты возникают удручающе часто, поскольку ACPI задиристый, как петух, и монструозный, как мамонт. Другая проблема связана с охлаждением процессора путем его автоматического отключения во время простоя системы. Некорректная поддержка ACPI зачастую приводит не только к 100% загрузке ЦП, но и к характерному треску во время проигрывания аудиофайлов. К тому же, многие ACPI-системы поддерживают динамическое управление производительностью, подбирая тактовые частоты и тайминги в соответствии с текущими потребностями, в том случае если ACPI-контроллеру удастся их угадать. Еще ACPI пытается оптимизировать системные ресурсы, старательно вешая на одно прерывание сразу несколько устройств. Вообще-то эта ситуация вполне нормальна (см. техническую заметку Q252420 в «Базе знаний» Microsoft), но не идеальная с точки зрения производительности.

Сравнивая производительность ACPI и не-ACPI ядер, не стоит забывать, что они используют разные таймеры для измерения системного времени, которые, между прочим, никто не калибровал, поэтому бенчмарки разных ядер могут существенно различаться уже за счет одной лишь инструментальной погрешности!

Многопроцессорные ядра самые медленные. Использовать их на однопроцессорных машинах не рекомендуется. Ядро, доставшееся в наследство от 486 машин, самое быстрое, однако, и самое ограниченное в своих функциональных возможностях. При использовании современного оборудования и некоторых навороченных игрушек могут появиться (а могут и не появиться :)) серьезные проблемы. Некоторые «специалисты» авторитетно утверждают, что выбирая i486, можно забыть про SIMD и SSE2, а это не ускоряет, а наоборот, замедляет систему. В действительности же никакого отношения к SIMD/SSE2-командам ядро не имеет, ведь не оно же их исполняет. Другой вопрос, что при переключениях с одной задачи на другую все SIMD/SSE2 регистры должны быть сохранены, иначе совместная работа двух и более мультимедийных приложений станет невозможной. Дизассемблирование подтверждает, что i486 ядро использует команду FXSAVE, автоматически сохраняющую все SIMD/SSE2-регистры, поэтому как раз на этот счет волноваться не надо.
DELETED
11/30/2007, 3:44:42 AM
Разгон и его последствия

Смена ядра не заставит процессор вычислять синус угла быстрее и уж точно не расширит пропускную способность интерфейсных шин. Популярные тестовые программы для измерения быстродействия ядер также не годятся, поскольку не обнаруживают никакого прироста производительности даже тогда, когда разница видна невооруженным глазом. Почему так происходит? Все очень просто. «Быстрые» ядра отличаются от «медленных» прежде всего накладными расходами на обработку прерываний и переключений между задачами. Промежуток времени между двумя переключениями (условно называемый квантом) - это целая вечность для процессора, в течение которой он успевает обсчитать множество тестовых задач, в результате чего длительность переключений просто не учитывается. К тому же, при малом числе потоков издержки от переключений между ними достаточно невелики, но стоит запустить параллельно с тестовой программой несколько тяжеловесных приложений, как все изменится!

Практика показывает, что на компьютерах, оснащенных SDR-памятью и процессорами с частотой менее 1 ГГц, i486 ядро существенно повышает отзывчивость системы, и работать с ней становится значительно приятнее. Для проверки запусти пару десятков приложений (обычное состояние системы к концу рабочего дня, не правда ли?) и замерь время выполнения контрольной задачи (например, наложения фильтра на гигабайтный рисунок в Photoshop, компиляцию мегабайтного файла, контекстный поиск в тысячестраничном pdf'e).

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

Заключение

Единого мнения по поводу целесообразности перехода на 486 ядро как не было, так и нет. Сообщения о реально проведенных экспериментах единичны, и статистики по ним не построишь. Тем не менее, перепробовать различные ядра, сравнивая их на вкус, все-таки стоит. Это не только интересно, но еще и познавательно.