Опрос
Вы участвуете в программе Windows Insider?
Популярные новости
Обсуждаемые новости

Отказ от архитектурного наследия Windows стал причиной успеха Windows 7

Напечатать страницу
30.11.2009 16:15 | deeper2k

Причина, по которой Vista казалась медленной пользователям, теперь стала очевидной разработчикам из Microsoft: эволюция компьютерного оборудования и, в частности, процессоров превзошла ожидания пользователей [и самих разработчиков] на момент премьеры Vista в начале 2007 года. Но развитие виртуализации и рост популярности многоядерных решений привел к тому, что Vista должна была управлять системами, общее количество ядер в которых превышало 64.

Создатели системы попросту не ожидали, что операционной системе придется управлять большим количеством ядер так скоро. По крайней мере, так заявили разработчики на PDC 2009 в Лос-Анджелесе. Когда независимые специалисты рассуждали о падении производительности в системах с количеством ядер, превыщающем восемь, серверные администраторы уже наблюдали его. Были уступки, на которые Microsoft пошла в Windows Vista, - эдакие компромиссы, обеспечиваемые сложными методами для упрощения выполнения определенных задач.

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

Марк Руссинович, эксперт Microsoft по производительности, является одним из наиболее популярных докладчиков каждый год на PDC и это в основном потому, что с самого начала своего выступления он демонстрирует полное понимание того, о чем рассказывает. Даже такому эксперту сложно показать Vista в хорошем свете, и Руссинович, надо отдать ему должное, даже не пытался.

После опроса аудитории о том, кто из них использует Windows 7 на повседневной основе (практически все 400 человек подняли руки), Руссинович спросил их: "Кто из вас до сих пор работает с Windows Vista, потому что она такая замечательная?" Затем он сделал паузу в ожидании ответа, а когда увидел, что практически все руки опустились, сам ответил на свой вопрос: "Я так и думал".

"Одна из вещей, которые сделали в Windows 7, продиктована четким и ясным сообщением от сообщества наших пользователей, а также ростом популярности нетбуков" - продолжил он. "Люди хотели компактную, эффективную, быструю ОС с низким потреблением электроэнергии. Поэтому мы прилагали к проекту громадные усилия от начала и до самого конца, от планирования до релиза. Так что это, по сути, первый релиз Windows, который требует меньше места на диске, чем предыдущая версия Windows, и это несмотря на добавление массы новых функций".

Чтобы превозмочь негативное отношение к Vista, Windows 7 должна была обладать такой масштабируемостью, которую пользователи смогли бы видеть и оценивать ежедневно.

Инженер ядра Windows Арун Кишан (Arun Kishan) так объяснил суть проблемы: "Когда мы планировали обеспечить поддержку 256 логических процессоров, мы поставили цель добиться масштабируемости порядка 1,3 - 1,4x, при этом предварительный TPCC составлял 1.4x на 128 логических процессоров в сравнении с 64-процессорной системой. Что же, не так и плохо, но мы увидели, что около 15% процессорного времени было затрачено в ожидании спинлока (от англ. spinlock)". Здесь подразумевается способ временной изоляции потоков от выполнения фрагмента ядра, когда этот фрагмент исполняется в другом потоке. Чтобы логические процессоры не простаивали, им приходится непрерывно "вращать свои колеса" или, по сути, бежать на месте.

"Получается, что 15% потерянного времени на 128-процессорной системе означает, что больше 15 из этих процессоров постоянно находятся в ожидании спинлока. Таким образом, оборудование используется не на все 100%".

Часть старого ядра Windows, которая отвечала за планирование, была диспетчером и она была защищена глобальным замком (от англ. lock). "Замок базы диспетчера изначально защищал целостность всех связанных с планированием структур данных" - говорит Кишан. "Сюда относятся приоритеты потоков, очереди готовности, любые объекты, которые могут ждать - семафоры, мьютексы, таймеры I/O, асинхронные вызовы процедур - все они были защищены планировщиком, который защищал все замком диспетчера.

"Со временем мы переместили некоторые пути из замка диспетчера путем добавления дополнительных замков, таких как замки потоков, замки таблицы таймеров, замки контрольной блокировки и другие" - объяснил Кишан. "Однако, при этом замок диспетчера в основном использовался для синхронизации состояния потоков. Так что в случае, если поток запущен и ждет набора объектов, находясь в режиме ожидания, этот переход будет синхронизирован с замком диспетчера. Причиной, по которой необходим глобальный замок, является сама ОС, обеспечивающая приложениям широкие возможности: приложение может ждать один объект, может ждать один объект с задержкой, может ждать несколько объектов и сообщить: "Эй, я просто хочу дождаться любого из этих объектов", а может и сообщить: "Я хочу дождаться каждого из них". Можно перемешивать и сочетать типы объектов. Поэтому, чтобы обеспечить такую гибкость, необходимо было использовать глобальный замок диспетчера. Но обратной стороной такого решения стал наиболее сложный с точки зрения конкуренции замок, усложняющийся по мере увеличения количества ядер".

В новом ядре Win7 и Windows Server 2008 R2 мы полностью отказались от замка диспетчера - критический элемент архитектуры, присутствующий в Windows вплоть до Windows Vista, исчез. На замену замку диспетчера пришла более точная блокировка с одиннадцатью типами замков для нового планировщика - для потоков, процессоров, таймеров, объектов - и правилами получения замков, призванными избежать взаимоблокировок. Контроль синхронизации на глобальном уровне больше не производится, объяснил Кишан, поэтому многие операции не нуждаются в замках. А благодаря транзакционной семантике появились параллельныи пути - сложные пути для потоков и процессоров, которые их выполняют.

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

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

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

Вот еще один тезис, в логичности которого могут усомниться многие пользователи: для системы наиболее эффективно использовать максимальное количество памяти, которое только возможно, но не для заполнения ее конкретными данными, а для заполнения страниц памяти хоть чем-то. В качестве иллюстрации к своему семинару известный инженер Microsoft Лэнди Вонг (Landy Wang) показал диспетчер задач Windows 7, где на компьютере с 8 Гб системной памяти и обычными системными процессами всего 97 МБ доступной памяти.

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

Вон выдержал паузу, а затем добавил: "Мы действительно используем много памяти, но мы искренне считаем, что используем ее грамотно".

Арун Кишан объяснил замок страницы диспетчера и отказ от его использования в Windows 7 путем замены более сложной системой символической семантики, которая позволяет выполнять потоки параллельно - более эффективным образом. Замки, которые никогда не были проблемой в эпоху Windows XP в итоге стали серьезным препятствием для Vista, и более чем в одном отношении, как Landy объяснил: "По мере нашего продвижения на все высшее и высшее число ядер, блокировка номера страницы фрейма[PFN ] была тем, что мы исторически использовали на протяжении почти 20 лет для управления массивами баз данных фреймов страниц - практически непрерывным, хотя может быть физически редким массивом ".

Запись номера фрейма страницы описывает физическое состояние страницы памяти, объяснил Вонг, посетителя - обнулен ли, свободен ли он, или он в ожидании, или он активен, сколько процессов взаимодействуют с ним одновременно? "В целом все данные, которые нам необходимы, о странице и, в частности, о том, как можно манипулировать ее состоянием. Размер этого массива является настолько же критическим, насколько важным является управление этой информацией".

На 32-битной системе с 64 Мб памяти по 4 К на странице используется 16 миллионов страниц. Каждая база данных PFN состоит из 28 байт, входящих в состав 32-байтного сегмента, при этом общий размер базы дает нам 450 МБ виртуального адресного пространства. "Можно подумать, что это низкая плата за преимущества. Это определенно ниже 1% от объема физической памяти вашей машины, поэтому можно подумать, что это вполне сносный результат. Но для нас этого было слишком много, потому что мы поняли, что в то время как физическая стоимость низка, виртуальная стоимость непомерно высока".

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

"Проблема с замком PFN заключается в том, что большинство всех виртуальных операций памяти были синхронизированы по одному общесистемному замку PFN" - говорит Лэнди Вонг (Landy Wang). "У нас был всего один замок, охватывающий весь этот массив, и это хорошо работало, но 20 лет назад, где четырехпроцессорными были лишь мейнфреймы, 64 МБ были неслыханной роскошью, поэтому базы PFN были довольно малы - максимум несколько тысяч записей.

Теперь же под замок PFN попадает все больше операций и структур данных - инженеры ожидали такого увеличения числа процессоров ближе к 2016 году. Это увеличило влияние на глобальные замки, и в Vista старая архитектура дала сбой. Вонг поделился интересной статистикой, которая, казалось, не удивила в зале никого - она просто подтвердила то, что они давно знали: хотя спинлок составлял около 15% процессорного времени на системах с 16 ядрами, это число стремительно увеличивалось, в частности, на SQL-серверах. "При переходе на систему с 128 процессорами SQL-сервер блокировал около 88% PFN. Он пытался блокировать одну из двух попыток, но был вынужден ждать. Это очень много и хуже всего, что со временем ситуация будет лишь ухудшаться".

Так что от этого глобального замка в Windows 7 также отказались, а ему на смену пришли более сложные и точные замки, где каждая страница получает свой собственный замок. В результате, как сообщил Вонг, 32-процессорные системы оказались в Windows Server 2008 R2 в 15 раз быстрее при выполнении операций на SQL-сервере и в иных приложениях - и это благодаря изменениям в методике блокировки, которая, ко всему прочему, совместима со старой системой. Код приложения не должен измениться.

Получилось так, что слабые места в архитектуре, концепции которой были заложены еще два десятилетия назад, стали причиной неудач Vista. В Windows 7 они были заменены более эффективной системой. Однако, ни для кого ни секрет, что мощность процессоров и виртуализация со временем будут увеличиваться. Таким образом, серьезные изменения в архитектуре Windows 7 могут оказаться, по сути, временной мерой, до того момента, когда будут предприняты еще более резкие меры.


Источник: http://www.betanews.com
Перевод: Really Fenix

Комментарии

Не в сети

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



А зачем серверным администраторам виста или 7ка на системах с числом ядер больше 8 ?

ЗЫ: Статья интересная, но не так же ее называть

Отказ от архитектурного наследия Windows Vista стал причиной успеха Windows 7


30.11.09 16:43
0
Не в сети

ZZZQQQWE, Виста и WinServ2008 имеют идентичные ядра и Win7 и WinServ2008R2 - тоже. Это значит, что с архитектурной точки зрения между ними разница мизерная, а вот с точки зрения обвеса...
Ок, переименовал статью.

30.11.09 16:57
0
Не в сети

Ага, автор статьи, видимо не читал ни одной статьи Руссиновича или не слушал его выступления. В своё время он так же и висту толкал, по мере своих сил и возможностей. Оно, конечно, и понятно: что поручили, то и продвигает. А выйдет какая-нибудь Win8 он будет глумиться над 7 с её "коалесцирующими загогулинами".

30.11.09 19:04
0
Не в сети

Alexiz, Вы, видимо, забыли про то, что время идёт ;)

будут предприняты еще более резкие меры


Более резкие меры - это переписать, по сути, добрую половину ядра, а то и больше, при этом не глядя на совместимость со старыми приложениями. Но что тогда начнётся!..

30.11.09 19:23
0
Не в сети

А потом будет русская матрешка, запускаем Windows Seven Mode а из под него уже Windows XP Mode.
И только тогда начинаем запускать нормально приложения.


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

30.11.09 19:50
0
Не в сети

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

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

30.11.09 19:59
0
Не в сети

Тогда и начнётся появление новой ОС ))

Применительно к Висте и 7ке, перманентное стремление забить всю оперативную память какими-нибудь данными, авось понадобятся, потому что тогда они будут грузиться быстрее... Ну, не знаю... Мне это кажется непродуктивным.

У них 8 гигов памяти и 97 метров свободно. Что это значит? Что с момента экрана приветствия, ОС начинает читать с диска всякую лабуду в оперативную память. И здесь два комичных момента. Во-первых, на время представьте, сколько времени и как громко будет жужать ваш диск, пока с него прочитается восемь гигов файлов, разбросанных по всем его бескрайним просторам.

Во-вторых, мне исключительно интересно, что именно на 8 гигов туда залезет? Мои 33 документа в ворде на общий объём в 2 мегабайта? Ещё аутлуковская база писем, метров на 100? Весь мой фотоалбом? Все мои музыкальные файлы? А запустит ли он Кризис, ХалфЛайф, чтобы не простаивала память? И будет ли 7ка в них играть, ну, чтобы ещё и все ядра процессора не простаивали? )))

30.11.09 20:36
0
Не в сети

сколько софта еще не переписано, и возможно уже не будет переписано под новую платформу

это сколько же? назови мне известный софт, не работающий на 7, кроме старого 1С

Что это значит?

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

30.11.09 21:53
0
Не в сети

2DeepOne

Resource Monitor расскажет, что винда загружает

01.12.09 11:19
0
Не в сети

это сколько же? назови мне известный софт, не работающий на 7, кроме старого 1С


1C 7.7 работает )

01.12.09 14:25
0
Не в сети

mychaelo, на одном 1С свет клином не стал, надо смотреть шире.
Есть море софта выпущенного в промежутке с 2001 по 2006 год, чьи разработки прекращены, ну это мелкий софт разных мало известных разработчиков.
Пойдем дальше, Регет, юзаю версию 4.1, потому как 5.2 якобы совместимая с Вин 7 глюкава до ужаса.
Если зайти еще дальше (работаю сейчас в организации где порядка 10К рабочих мест, и ВЕСЬ софт лицензионный) и взглянем на софт с лицензией на одно рабочее место. Обычно он поддерживает лицензию в пределах одной версии. Более новые версии стоят в пределах обновления лицензии от 40 до 100% стоимости лицензии, и представьте сколько надо отвалить денег чтобы обновить 10000 лицензий!!!
А есть еще узкая ниша, софт написанный под заказ Переписывание софта стоит столько же сколько и изначальный заказ, если не дороже, все зависит от того под что написана программа. И не забудьте умножить на число нужных лицензий !!!
Используя ворованные лицензии легко рассуждать, а попробуйте 5-10 лицензионных программ развернуть на 10000 рабочих станций ( число программ варьируется в зависимости от назначения АРМ) да еще прикиньте сколько будет стоить обновление корпоративной версии Вин ХР до Семерки, причем АРМ надо тоже будет обновлять в плане железа.

01.12.09 19:26
0
Не в сети

StarLancer_23, спасибо

01.12.09 22:59
0
Не в сети

TheHacker
Так не обновляйте Windows, если сторонний софт не пускает! Microsoft, то тут причем? Совместимость поддерживать 1000 лет нужно? или больше? а то, видите ли, софт написанный под заказ новых версий не поддерживает. Для чего писался, то и поддерживает, кто Вас знает, может Вы Lexicon,ом пользуетесь

04.12.09 20:49
0
Для возможности комментировать войдите в 1 клик через

По теме

Акции MSFT
420.55 0.00
Акции торгуются с 17:30 до 00:00 по Москве
Все права принадлежат © ms insider @thevista.ru, 2022
Сайт является источником уникальной информации о семействе операционных систем Windows и других продуктах Microsoft. Перепечатка материалов возможна только с разрешения редакции.
Работает на WMS 2.34 (Страница создана за 0.088 секунд (Общее время SQL: 0.068 секунд - SQL запросов: 79 - Среднее время SQL: 0.00086 секунд))
Top.Mail.Ru