Рыбный день #3: Tweak'n'Pray (безумству храбрых…)



tweak:(1) щипок; (2) дергать, ущипнуть, щипать;

Ну какой же «кулхацкер» не твикает Windows? Это ведь даже как бы позорно — не знать на память основных ветвей реестра, не иметь самых свежих версий распространенных программ тонкой настройки… Зачем мы это делаем — понятно: во-первых интересно (именно «во-первых», как по мне!), а во-вторых — действительно, некоторые установки по умолчанию не всем подходят. Однако почему-то еще нигде я не видел следов «письменных раздумий» над самим явлением твикинга. Почему он существует? Почему он работает? Для чего все это вообще?



Кому-то, быть может, вся нижеследующая натурфилософия покажется ненужной и утомительной, однако она отражает личный взгляд автора на обязательную последовательность, которая должна быть свойственна любым осознанным действиям homo sapiens: сначала понять ЗАЧЕМ нам вообще нужно совершать какие-то телодвижения, потом — ЧТО мы будем делать, далее — ознакомиться с тем, как это делается ПРАВИЛЬНО, и уже только после этого — начинать эксперименты. Другие последовательности, как показывает практика, приводят чаще всего к результатам плачевным или попросту непредсказуемым (классическая ситуация «обезьяны с гранатой»). Поэтому прежде чем углубляться в тонкие настройки реестра и устанавливать очередной X-Setup, я предлагаю вам попытаться понять саму суть того, что все «виндузятники» называют «твикингом». Также заранее оговариваюсь, что посвящена эта статья только первому вопросу — «зачем?», и практических рекомендаций намеренно не содержит — на этом поле игроков хватает и без вашего покорного слуги, а я подчеркнуто не люблю людные места :).

Для начала давайте поговорим о том, что, являясь в общем-то очевидным, тем не менее почему-то ни разу на моей памяти не обсуждалось — а почему, собственно, крупнейший производитель software дал нам в руки такой могучий и небезопасный (ввиду первого качества) инструмент как тонкие настройки системы? По поводу «никто не давал, мы сами взяли» — лучше не обольщаться. Если бы была поставлена задача сделать «твики» недоступными — было бы это сделано, и легко. Достаточно назвать переменную не «NonPagedPoolSize», а как-нибудь «FER_LW15» — и докапывались бы юные и маститые настройщики до ее истинного значения годами… Можно, конечно, возразить, что тогда и самим программистам Microsoft пришлось бы труднее, но это кардинально дела не меняет: если бы захотели все спрятать — смирились бы и с трудностями. В конце концов, могли бы организовать ветку реестра, начисто защищенную даже от просмотра — на уровне API. Следовательно, никто ничего прятать шибко сильно не хотел. Тогда второй вопрос — а зачем вообще это нужно? Заранее оговариваюсь, что все нижеследующее является вольными авторскими рассуждениями на тему, не подкреплено никакими официальными документами, и по сути является чистейшей воды натурфилософией.

Windows — очень большая операционная система, это, думаю, ни у кого возражений не вызовет. Миллионы (как бы не десятки миллионов уже?) строк кода, куча компонентов, довольно сложное (опять-таки компонентное) ядро. И все это должно не только работать и «не глючить» (тоже важные требования, конечно), но еще и работать на среднем на данный момент по мощности компьютере с более-менее приемлемой скоростью. Итак, мы имеем ОС, намного более «тяжелую» чем многие другие, которая, тем не менее, должна выигрывать у них в быстродействии, ну или по крайней мере «держать марку» и не проигрывать. Как этого достичь? Путь был выбран один из наиболее очевидных и простых: «тонко заточить» под определенные параметры железа и наиболее распространенные его комбинации. Если ядро ОС ориентируется на то, что ему нужно правильно распределить виртуальную и физическую память между неким количеством приложений при условии наличия некоего объема ОЗУ и некоего свободного пространства на физическом диске — то нам нужна сложная идеология, продуманные алгоритмы… да чуть ли не искусственный интеллект в миниатюре! И все равно нет гарантии, что будет принято оптимальное решение. Однако, как общеизвестно, вечная игла для примуса нужна только тому, кто собирается жить вечно…

А вот если мы ориентируемся на то, что средний пользователь работает на машине с процессором Celeron 667, с тремя-четырьмя приложениями, размер которых в среднем составляет от X до Y мегабайт, и при этом у нас в большинстве случаев что-то около Z мегабайт физической памяти и W гигабайт на жестком диске, быстродействие которого примерно равно R — это уже задача гораздо более простая, потому что мы имеем дело с более-менее ограниченным числом вариантов поведения. Однако «зашивать» все эти константы в код не очень-то удобно — ведь конфигурация этого «среднего компьютера» меняется довольно быстро, и в этом случае та версия ОС, которая была куплена (а точенее — выпущена) сегодня, через год будет жестко ориентирована на работу с аппаратной конфигурацией вчерашнего дня. Поэтому проще всего соответствующие параметры… правильно — прописать в реестр! Политики кэширования, размер системных буферов, даже ориентировочный размер кэша второго уровня CPU — все это настраивается посредством изменения переменных реестра, и все эти данные ядро ОС учитывает (ну или по крайней мере пытается это делать :) при работе. Кроме того, с помощью тех же переменных можно «переориентировать» одно и то же ядро ОС на работу в совершенно разном качестве — рабочей станции, сервера приложений, файл-сервера. Некоторые из этих установок даже доступны для изменения рядовым пользователем через графический интерфейс — если, конечно, хватит терпения до них добраться :). Кроме того (пока что у меня нет подтверждений этого предположения, но уж очень сильно оно напрашивается!) — можно изменять предустановки системы в процессе установки Service Pack, если с момента ее выхода аппаратная конфигурация усредненного ПК сильно изменилась.

Соответственно, мы приходим к неизбежному выводу — довольно, нужно сказать, смелому, однако я предупреждал в самом начале что все эти рассуждения базируются исключительно на «рассуждательном» подходе, поэтому соглашаться с ним вовсе не обязательно: компьютер, являющийся для данного времени типичным, скорее всего, специально настраивать не надо — он уже достаточно профессионально (думаю, гораздо профессиональнее любых самоделкиных) «протвикан» самим Microsoft. Тонкая же настройка по большей части нужна системам либо откровенно устаревшим (чтобы Windows не требовала от них большего, чем они могут дать), либо наоборот, опережающим свое время (чтобы ОС могла на полную катушку использовать их мощь).

А вот теперь — о грустном. Безопасен ли твикинг? Однозначно — нет. Потому что на самом деле необходимо четко понимать одну простую вещь: современная операционная система — очень сложная штука, и исключительно на основании рапортов всех программистов о том что «мы все написали в соответствии с правилами и методиками» делать вывод о том, что все будет работать нормально — весьма опрометчиво. Для того же, чтобы убедиться в работоспособности и безглючности системы хотя на определенном наборе наиболее распространенных случаев, ее тщательно тестируют. Тщательно, и очень долго. И многое находят! И исправляют. И потом снова тестируют. И так далее, пока не будет решено, что процент глюков снизился до приемлемого, или не придет Самый Старший Менеджер и не скажет: «Хватит, ребята, фигней страдать, мы уже продали авансом третий миллион CD с этой ОС!» :). Уже поняли, к чему я веду? Нет? Ну тогда раскрываю страшную тайну: тестируется это все как правило именно на тех самых установках по умолчанию, которые мы наблюдаем с вами после установки системы. Изменяя же их на другие (пусть даже эти «другие» формально и предусмотрены), мы отдаем себя в руки того программиста, который писал конкретный модуль, и правильности его кода. То есть «оно» по идее работать должно, но вот это уже никто не тестировал. Более того — как будет работать один системный модуль с измененной настройкой, с другим системным модулем с измененной настройкой — тоже вопрос весьма интересный. Быть может, по отдельности они от изменения настроек глючить и не будут, а вот при совместной работе — ловите очередной BSOD. Поэтому в завершение сформулирую еще одно эмпирическое правило: любое изменение установок по умолчанию, не доступных через функции настройки системы, стабильность ее работы повысить не может, а вот снизить — запросто. Соответственно — чем большее количество настроек вы изменяете — тем больше вероятность того, что надежность снизится. Никто не говорит, что «твикать» ОС не нужно вообще. Но помнить про это простое правило — как минимум не вредно. Равно как и помнить про то, что строго говоря, за стабильность работы ОС, настройки которой были изменены нештатными средствами, ее производитель уж точно никакой ответственности не несет. Ну, вот и все на сегодня. Теперь можете закрывать окно броузера и запускать твикалку :).




20 марта 2003 Г.

« » #3

#3: Tweak'n'Pray
( …)



tweak:(1) ; (2) , , ;

«» Windows? — , … — : - ( «-», !), - — , . - « » . ? ? ?



-, , , , homo sapiens: - , — , — , , — . , , ( « »). X-Setup, , «» «». , — «?», — , :).

, , - , - — , , software ( ) ? « , » — . «» — , . «NonPagedPoolSize», - «FER_LW15» — … , , , Microsoft , : . , , — API. , . — ? , , , .

Windows — , , , . ( ?) , , (- ) . « » ( , ), - . , , «» , , , , « » . ? : « » . , — , … ! , . , , , …

, Celeron 667, - , X Y , - Z W , R — , - . «» - — « » , , ( — ) , . … — ! , , CPU — , ( :) . , «» — , , -. — , , :). ( , !) — Service Pack, .

, — , , , «» , : , , , — (, ) «» Microsoft. ( Windows , ), , ( ).

— . ? — . : — , « » , — . , , . , . ! . . , , , : «, , , CD !» :). , ? ? : , . ( «» ), , , . «» , . — , — . , , — BSOD. : , , , — . — — , . , «» . — . , , , , . , . :).