Оптимизация Windows — мифы и реальность (часть 2)


Что же такое оптимизация?

Прежде чем углубляться в рассуждения, определимся с терминами.

Толковый словарь дает следующие определения слова «оптимизация»:

  1. Оптимизация — нахождение наибольшего или наименьшего значения какой-либо функции.
  2. Оптимизация — выбор наилучшего (оптимального) варианта из множества возможных.

Первое определение сразу отбрасываем, поскольку речь идет не о математических функциях. На втором стоит остановиться подробнее. Вариантов изменения настроек ОС действительно множество, сценариев использования компьютеров тоже множество. Как определить, какой из вариантов настроек оптимален? И для чего он оптимален?

Еще один термин — скорость работы системы. Он также весьма многогранен.

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

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

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

Скорее всего программа будет использовать 97-99 процентов вычислительной мощности процессора. На первый взгляд все нормально: на свои нужды Windows использует считанные единицы процентов или даже меньше одного процента.

Запущен архиватор
Рис. 1. Запущен архиватор

Немного усложним эксперимент и включим в диспетчере задач показ времени ядра.

Картина становится не такой радужной: оказывается, ядро системы работает и отнимает заметную долю ресурсов процессора — в данном случае около 10-20 процентов.

Включаем показ времени ядра
Рис. 2. Включаем показ времени ядра

Казалось бы, вот он, резерв повышения производительности! Ведь очевидно, что, оптимизировав работу системы, можно увеличить скорость работы программы чуть ли не на те же самые 10-20 процентов! В идеале, конечно.

На самом деле этот вывод оказывается ложным. Та доля времени, которая отдается ядру, почти целиком используется опять же для нужд того самого архиватора, в частности на операции чтения с диска и записи на него, ведь эти операции выполняет не сама программа, а ОС по указаниям программы. Так что хоть в это «красное» время и исполняется код ядра системы, этот код обслуживает запросы архиватора.

Скорее всего, в этом месте у читателя сходу возникнет полувозражение-полувопрос. Но ведь в это время все же работает код ядра — наверняка можно оптимизировать его работу так, чтобы оно требовало меньше процессорного времени? Что-нибудь подкрутить, что-нибудь подстроить, что-то ненужное отключить?..

Увы, сколько-нибудь заметных улучшений добиться не удастся. Прежде всего потому, что львиная доля этого «красного» времени ядра уходит на работу с железом. Проверить это проще простого: возьмите носитель с невысокой скоростью обмена, скажем, переключив контроллер диска в режим PIO. Автор не рекомендует проводить такие эксперименты на основном жестком диске из-за возможности заметного снижения скорости работы. Поэтому для эксперимента был выбран контроллер PCMCIA с модулем флеш-памяти, работающий именно в режиме программного ввода-вывода.

Тот же компьютер, те же данные, но очень медленный диск
Рис. 3. Тот же компьютер, те же данные, но очень медленный диск

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

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

Есть ли в системе резервы для ускорения работы?

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

Отчасти, конечно, это верно. Вопрос заключается только в том, насколько велико это ухудшение и ухудшение ли это вообще.

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

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

Вернемся в прошлое. Незадолго до выхода Windows XP Майкл Фортин, долгое время руководивший в «Майкрософт» группой, отвечавшей за производительность системы, составил для бета-тестеров весьма любопытный документ о том, как его группа работала и какие результаты получила (выжимки из него можно найти в http://forum.ixbt.com/topic.cgi?id=67:1#22). Внутренняя оценка изменений производительности звучала так: «разница между Win2K и Windows XP временами мала, около одного процента, временами велика, 5-10 процентов или около того».

Из этого следует достаточно очевидный вывод, что сколько-нибудь заметного увеличения скорости работы при помощи твикинга и «оптимизаций» получить не удастся.

Предположим, что система отнимает на свои нужды пять процентов времени процессора (обычно эта величина все же меньше), значит, работающему в это время процессу достается 95%. Допустим, мы улучшим систему вдвое (конечно, это фантастика, но давайте все-таки предположим такую возможность), так что она отнимет только 2,5 процента времени ЦП, а приложению достанется уже 97,5 процента. Скорость работы приложения увеличится на (97,5−95)⁄95=2,6 процента, то есть прирост получится отнюдь не фантастическим и практически незаметным на глаз.

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

Но ведь, опять же скажете вы, в интернете можно найти кучу советов по улучшению тех или иных характеристик — что они дают? Как вы, уже, наверное, поняли, у меня не возникло ни малейшего желания заниматься экспериментальным опровержением всех этих идей: пусть их доказывает тот, кто делает такие утверждения. Но вопрос Майклу Фортину я все же задал, ведь у его группы ресурсов намного больше, чем у любого человека. Ответ звучал так: «Я опросил часть нашей команды [напомню, она называется Windows performance team, то есть группа производительности Windows] и сам немного удивился. Оказалось, большинство из них обсуждало подобные рекомендации и коллективный вывод был таков: много шума из ничего. За одним-единственным исключением: совет удалять программы, которые не используются, — полезен».

Теперь о третьей стороне «свистелок»

Если нельзя добиться сколько-нибудь значительного прироста скорости работы ОС, то что же остается? Один из путей — увеличить производительность компьютера. Это самый надежный, самый дорогой, но не всегда эффективный метод. Помните старую шутку: замените в своем компьютере Pentium 100 на Pentium 200, и он начнет простаивать вдвое быстрее? Во многих случаях повышение скорости компьютера давно уже не увеличивает скорость выполнения работы человеком, сидящим за этим компьютером. Невозможно набрать текст в редакторе или ввести числа в электронную таблицу быстрее только из-за того, что в компьютере прибавилось оперативной памяти или у нового процессора выше частота.

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

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

Проведем простенький расчет: допустим, вам удалось сократить время загрузки с одной минуты до 30 секунд. Казалось бы, результат весьма неплох. Но перед этим вы полдня провели, читая разные форумы, сравнивая и анализируя полученную информацию, решая, что именно следует предпринять. Итого для экономии 30 секунд на каждой перезагрузке потрачено 4 часа (14400 секунд). Нетрудно подсчитать, что эти затраты оправдаются через 480 перезагрузок, и только после этого (при загрузке раз в день — примерно через полтора года) вы начнете получать выгоду. Причем не исключено, что за эти полтора года вы купите новый компьютер или переустановите систему, и затраты на «оптимизацию» окажутся просто впустую потраченным временем. В лучшем случае вы получите косвенную выгоду за счет дополнительно приобретенных знаний, но право же, эти знания можно было приобрести и другим, более легким путем.

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

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

Если вы видите совет установить некое значение в параметре SecondLevelDataCache, вспомните, что этот параметр перестал использоваться начиная с Win2000 SP1. Утверждения, что параметр DisablePagingExecutive увеличивает скорость работы системы, неверны: он увеличивает скорость отклика системы за счет некоторого снижения производительности в целом. Рекомендация установить число ядер в настройках Msconfig для ускорения загрузки в лучшем случае бесполезна, ведь система и так по умолчанию использует все ядра. Зато уже были примеры, когда человек, сменив двухъядерный процессор на четырехъядерный и забыв восстановить исходное значение настройки, недоумевал, куда же делись два добавленных ядра.

Заключение

Заниматься изучением и внедрением в жизнь различных советов по оптимизации Windows — значит в лучшем случае тратить время впустую, а в худшем — заботливо раскладывать на будущее грабли для себя, любимого.

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

15 ноября 2010 Г.

Windows — ( 2)

Windows — ( 2)

?

, .

«»:

  1.  —  - .
  2.  —  () .

, . . , . , ? ?

— . .

, , , . - , , . , , . , , Word Excel.

, , , .

: - , , , , ( ).

97-99 . : Windows .


. 1.

.

: , — 10-20 .


. 2.

, , ! , , , 10-20 ! , .

. , , , , , . «» , .

, -. — , ? - , - , - ?..

, - . , «» . : , , PIO. - . PCMCIA -, -.

  ,   ,
. 3. , ,

, , , . , .

: . , , Windows — .

?

Windows «» «», . , .

, , . , .

, . : , ( ) - Windows 7 . — , , «» , . … .

, , . , . , .

. Windows XP , «» , , - , ( http://forum.ixbt.com/topic.cgi?id=67:1#22). : « Win2K Windows XP , , , 5-10 ».

, - «» .

, ( ), , 95%. , (, , - ), 2,5 , 97,5 . (97,5−95)⁄95=2,6 , .

, - , .

, , — ? , , , , : , . , , . : « [, Windows performance team, Windows] . , : . - : , , — ».

«»

- , ? — . , , . : Pentium 100 Pentium 200, ? , . - , .

, - , . — , . , , , . , , .

, , , : . , - — , . , , , . , .

: , 30 . , . , , , , . 30 4 (14400 ). , 480 , ( — ) . , , «» . , , , .

. , , . , . ( ) « Windows 7, ( . .) » . ( ), , , , . , . , .

, .

SecondLevelDataCache, , Win2000 SP1. , DisablePagingExecutive , : . Msconfig , . , , , , .

Windows — , — , .

, , , — , . - , , .